首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scikit dask和dask-ml LogisticRegression的不同结果

scikit dask和dask-ml LogisticRegression的不同结果
EN

Stack Overflow用户
提问于 2019-07-31 16:25:38
回答 1查看 795关注 0票数 1

当使用相同的数据运行相同的LogisticRegression时,scikit-learn和dask实现之间的结果不应该不同。

版本: scikit-learn=0.21.2

达斯克-毫升=1.0.0

首先是dask:

代码语言:javascript
复制
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn import metrics
from dask_yarn import YarnCluster
from dask.distributed import Client
from dask_ml.linear_model import LogisticRegression
import dask.dataframe as dd
import dask.array as da
digits = load_digits()
x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=0)
lr = LogisticRegression(solver_kwargs={"normalize":False})
lr.fit(x_train, y_train)
score = lr.score(x_test, y_test)
print(score)
predictions = lr.predict(x_test)
cm = metrics.confusion_matrix(y_test, predictions)
print(cm)

现在使用sklearn:

代码语言:javascript
复制
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn import metrics
from dask_yarn import YarnCluster
from dask.distributed import Client
from sklearn.linear_model import LogisticRegression
import dask.dataframe as dd
import dask.array as da
digits = load_digits()
x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=0)
lr = LogisticRegression()
lr.fit(x_train, y_train)
score = lr.score(x_test, y_test)
print(score)
predictions = lr.predict(x_test)
cm = metrics.confusion_matrix(y_test, predictions)
print(cm)

scikit学习的分数和卷积矩阵

代码语言:javascript
复制
0.9533333333333334
[[37  0  0  0  0  0  0  0  0  0]
 [ 0 39  0  0  0  0  2  0  2  0]
 [ 0  0 41  3  0  0  0  0  0  0]
 [ 0  0  1 43  0  0  0  0  0  1]
 [ 0  0  0  0 38  0  0  0  0  0]
 [ 0  1  0  0  0 47  0  0  0  0]
 [ 0  0  0  0  0  0 52  0  0  0]
 [ 0  1  0  1  1  0  0 45  0  0]
 [ 0  3  1  0  0  0  0  0 43  1]
 [ 0  0  0  1  0  1  0  0  1 44]]

dask的记分和卷积矩阵

代码语言:javascript
复制
0.09555555555555556
[[ 0 37  0  0  0  0  0  0  0  0]
 [ 0 43  0  0  0  0  0  0  0  0]
 [ 0 44  0  0  0  0  0  0  0  0]
 [ 0 45  0  0  0  0  0  0  0  0]
 [ 0 38  0  0  0  0  0  0  0  0]
 [ 0 48  0  0  0  0  0  0  0  0]
 [ 0 52  0  0  0  0  0  0  0  0]
 [ 0 48  0  0  0  0  0  0  0  0]
 [ 0 48  0  0  0  0  0  0  0  0]
 [ 0 47  0  0  0  0  0  0  0  0]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 02:41:58

dask_ml==1.0.0版本的Dask不支持多个类的logistic回归。使用原始示例的稍微修改的版本,如果您从贴合的dask predictions分类器中打印LogisticRegression,您将看到它给出了一个充满True的布尔数组。

代码语言:javascript
复制
from sklearn.datasets import load_digits
from dask_ml.linear_model import LogisticRegression

X, y = load_digits(return_X_y=True)
lr = LogisticRegression(solver_kwargs={"normalize": False})
lr.fit(X, y)
predictions = lr.predict(X)
print('predictions = {}'.format(predictions))

输出

代码语言:javascript
复制
predictions = [ True  True  True ...  True  True  True]

这就是为什么达斯克-毫升和科学学习混淆矩阵彼此不同的原因。

在GitHub at https://github.com/dask/dask-ml/issues/386上有一个相关的未决问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57295274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档