适合或预测LinearDiscriminantAnalysis的功能

时间:2016-04-27 20:08:52

标签: python pandas scikit-learn

我正在尝试使用SciKit-learn线性判别分析包,根据已知坐标标记为标签指定坐标。训练坐标和标签存储在一个pandas数据框中,目标coordiantes存储在另一个pandas数据框中。两个数据帧的行长不相等,训练集更大。我想在原始数据帧中的坐标上应用标签,以用作pd.merge的键。

我知道我可以使用多边形或Shapely中的matplot点来解决这个问题但是想以这种方式测试它。这是我基于docs

的内容
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
labels_fea = le.fit_transform(Spatial_index['Postcode']) 
trainingdata=df1[['xcoord','ycoord']].values
targetvalues=df2[['xcoord','ycoord']].values
clf = LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None,      
n_components=None, store_covariance=False, tol=0.0001)

然后执行如下,

clf.fit(trainingdata,targetvalues) 

这会引发以下错误,

ValueError: bad input shape (8860, 2)

1 个答案:

答案 0 :(得分:0)

我认为您对目标和测试感到困惑。错误正在发生,因为分类器需要一个一维的标签数组 - 在您的情况下,是邮政编码。如果没有看到您的数据,我无法确定,但您可能想要这样做

clf.fit(trainingdata, labels_fea) 

然后将targetdata重命名为testdata,您将获得使用clf.predict(testdata)

测试模型的预测