2017-04-03 3 views
1

私は説明変数を持つpd.DataFrameを持っています:Xとターゲット変数yを持つ別のデータフレームです。python LDA scikit learn throw ValueError

type(X) 
Out[1]: pandas.core.frame.DataFrame 

X_num.shape 
Out[2]: (1213, 3298) 

type(y) 

Out[3]: pandas.core.frame.DataFrame 

y.shape 
Out[4]: (1213, 8) 

と私は、yの1列のみ使用してLDAを計算したい:yは列名を持つ

y[col].name 
Out[5]: u'myvarname' 

しかし

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA 
lda = LDA(n_components=2) 
    for col in y: 
     X_t = lda.fit(X.copy(), y[col].copy()) 

をI常にエラーが発生する

ValueError: Unknown label type: (array([ 0.001, 0.003 ... 

私も

X_t = lda.fit(X.copy(), y[col].values.copy()) 

を試してみましたが、同じエラーを得ました。ヘルプフィットによる

はYとして

Y : array-like of response, shape = [n_samples, n_targets] 
Target vectors, where n_samples in the number of samples 
and n_targets is the number of response variables. 

誰も私が間違って何をしたかのアイデアを必要としますか?

答えて

1

線形判別分析は、分類の手法です。

array([ 0.001, 0.003 ... 

そしてsklearnは、カテゴリラベルとしてこれを解釈する方法を知っていない:あなたのエラーによると、あなたのY値は浮動小数点値の配列のいくつかの並べ替えを必要とします。 あなたはLDAを使用するべきであり、回帰の何らかの種類ではありませんか?

+0

弦に変換しました。 y値はカテゴリですが、浮動小数点数として保存されるため、分類は適切なツールです。 – horseshoe

関連する問題