【发布时间】:2016-09-02 12:26:51
【问题描述】:
谁能告诉我我的代码有什么问题? 为什么我可以使用 LinearRegression 预测 iris 数据集的概率,但是 KNeighborsClassifier 给我 0 或 1 而它应该给我一个类似于 LinearRegression 产生的结果?
from sklearn.datasets import load_iris
from sklearn import metrics
iris = load_iris()
X = iris.data
y = iris.target
for train_index, test_index in skf:
X_train, X_test = X_total[train_index], X_total[test_index]
y_train, y_test = y_total[train_index], y_total[test_index]
from sklearn.linear_model import LogisticRegression
ln = LogisticRegression()
ln.fit(X_train,y_train)
ln.predict_proba(X_test)[:,1]
数组([ 0.18075722, 0.08906078, 0.14693156, 0.10467766, 0.14823032, 0.70361962、0.65733216、0.77864636、0.67203114、0.68655163、 0.25219798, 0.3863194, 0.30735105, 0.13963637, 0.28017798])
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5, algorithm='ball_tree', metric='euclidean')
knn.fit(X_train, y_train)
knn.predict_proba(X_test)[0:10,1]
数组([ 0., 0., 0., 0., 0., 1., 1., 1., 1., 1.])
【问题讨论】:
-
回归 != 分类。并非所有分类器都支持概率的概念!
标签: machine-learning scikit-learn probability nearest-neighbor