[PYTHON] Python의 Spark DataFrame에서 labeledPoints 만들기
PYTHONPython의 Spark DataFrame에서 labeledPoints 만들기
파이썬에서 .map () 함수를 사용하면 스파크 데이터 프레임에서 labeledPoints 세트를 만들 수 있습니까? 레이블 / 결과가 첫 번째 열이 아니지만 열 이름 인 '상태'를 참조 할 수 있다면 표기법은 무엇입니까?
이 .map () 함수를 사용하여 파이썬 데이터 프레임을 만듭니다.
def parsePoint(line):
listmp = list(line.split('\t'))
dataframe = pd.DataFrame(pd.get_dummies(listmp[1:]).sum()).transpose()
dataframe.insert(0, 'status', dataframe['accepted'])
if 'NULL' in dataframe.columns:
dataframe = dataframe.drop('NULL', axis=1)
if '' in dataframe.columns:
dataframe = dataframe.drop('', axis=1)
if 'rejected' in dataframe.columns:
dataframe = dataframe.drop('rejected', axis=1)
if 'accepted' in dataframe.columns:
dataframe = dataframe.drop('accepted', axis=1)
return dataframe
reduce 함수가 모든 팬더 데이터 프레임을 재결합 한 후에이를 Spark 데이터 프레임으로 변환합니다.
parsedData=sqlContext.createDataFrame(parsedData)
하지만 이제 어떻게 파이썬에서 labledPoints를 만들 수 있습니까? 나는 그것이 다른 .map () 함수일지도 모른다라고 추정한다?
해결법
-
==============================
1.이미 숫자 형 기능이 있고 추가 변환이 필요하지 않은 경우 VectorAssembler를 사용하여 독립 변수가 포함 된 열을 결합 할 수 있습니다.
이미 숫자 형 기능이 있고 추가 변환이 필요하지 않은 경우 VectorAssembler를 사용하여 독립 변수가 포함 된 열을 결합 할 수 있습니다.
from pyspark.ml.feature import VectorAssembler assembler = VectorAssembler( inputCols=["your", "independent", "variables"], outputCol="features") transformed = assembler.transform(parsedData)
다음은 간단히 매핑 할 수 있습니다.
from pyspark.mllib.regression import LabeledPoint from pyspark.sql.functions import col (transformed.select(col("outcome_column").alias("label"), col("features")) .rdd .map(lambda row: LabeledPoint(row.label, row.features)))
Spark 2.0 ml 및 mllib API는 더 이상 호환되지 않으며 후자는 더 이상 지원되지 않을 예정입니다. 그래도 필요하다면 ml.Vectors를 mllib.Vectors로 변환해야합니다.
from pyspark.mllib import linalg as mllib_linalg from pyspark.ml import linalg as ml_linalg def as_old(v): if isinstance(v, ml_linalg.SparseVector): return mllib_linalg.SparseVector(v.size, v.indices, v.values) if isinstance(v, ml_linalg.DenseVector): return mllib_linalg.DenseVector(v.values) raise ValueError("Unsupported type {0}".format(type(v)))
지도 :
lambda row: LabeledPoint(row.label, as_old(row.features)))
from https://stackoverflow.com/questions/32556178/create-labeledpoints-from-spark-dataframe-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 어떻게 프록시를 통해 POP 또는 IMAP을 통해 이메일을 가져올 수 있습니까? (0) | 2018.11.18 |
---|---|
[PYTHON] UTF-8 8 진수를 유니 코드 코드 포인트로 변환 (0) | 2018.11.18 |
[PYTHON] 내부 클래스 : 생성시 외부 클래스 객체를 얻으려면 어떻게해야합니까? (0) | 2018.11.18 |
[PYTHON] pandas에 rolling_apply를 사용하는 Python 사용자 정의 함수 (0) | 2018.11.18 |
[PYTHON] 파이썬에서 fft bandpass 필터 (0) | 2018.11.18 |