2017-03-22 30 views
0

私は基本的に数値データからなる非常に単純なデータセットでいくつかのテストを行っています。 hereが見つかりました。pandasデータフレームからLabeledPoint RDDに変換

私はpandas、numpy、scikit-learnでうまくやっていましたが、Sparkに移動するときに正しいデータをデシジョンツリーに入力できませんでした。

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/poker/poker-hand-training-true.data') 

raw_data = sc.parallelize(df) 

train_dataset = raw_data.map(lambda line: line.split(","))\ 
          .map(lambda line:LabeledPoint(line[10], np.array([float(x) for x in line[0:10]]))) 

私はmap関数の内部アクセスlineをしようとするときIndexError: list index out of rangeを取得保管:

私は動作しませんでした、これをやっていました。私は実際にファイルをダウンロードし、次のようにコードを変更したとき

私はそれが仕事を得るために管理:

raw_data = sc.textFile('.../datasets/poker-hand-training.data') 

train_dataset = raw_data.map(lambda line: line.split(","))\ 
          .map(lambda line:LabeledPoint(line[10], np.array([float(x) for x in line[0:10]]))) 

私はデータセットをダウンロードしたくない場合は、それがデータを取得することが可能ですread_csvを使用して、パンダのデータフレームから直接準備ができましたか?

答えて

1

Pandas DataFrameSpark DataFrameに最初に変換することをお勧めします。これを行うにはsqlContext.createDataFrameメソッドを使用できます。

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/poker/poker-hand-training-true.data', names=['S1','C1','S2','C2','S3','C3','S4','C4','S5','C5','class']) 
s_df = spark.createDataFrame(df) 

ここで、このデータフレームを使用してトレーニングデータセットを取得できます。

train_dataset = s_df.rdd.map(lambda x: LabeledPoint(x[10], x[:10])).collect() 
関連する問題