使用 scikit-learn python 的逻辑回归输出不匹配
Posted
技术标签:
【中文标题】使用 scikit-learn python 的逻辑回归输出不匹配【英文标题】:Logistic regression output using scikit-learn python not matching 【发布时间】:2017-10-20 16:25:37 【问题描述】:尝试执行以下代码以使用逻辑回归预测值,但即使训练数据中存在的完全相同的行存在于测试数据中,我也没有得到正确的结果。
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import pandas as pd
X_train_data = 'NegativeScore': [0.25,0.00,0.00,0.00], \
'NeutralScore':[0.00,0.12,0.00,0.00], \
'PositiveScore': [0.00,0.00,0.19,0.43]
X_train = pd.DataFrame(X_train_data, columns = \
['NegativeScore', 'NeutralScore', 'PositiveScore'])
y_train_data = 'Y': ["Negative", "Others", "Others", "Others"]
y_train = pd.DataFrame(y_train_data, columns = ['Y'])
y_train = y_train.values.ravel()
X_test_data = 'NegativeScore': [0.25, 0.00, 0.00, 0.00, 0.00], \
'NeutralScore': [0.00, 0.28, 0.00, 0.00, 0.00], \
'PositiveScore': [0.00, 0.00, 0.20, 0.30, 0.11]
X_test = pd.DataFrame(X_test_data, columns = ['NegativeScore', 'NeutralScore', 'PositiveScore'])
y_test_data = 'Y': ["Negative", "Others", "Others", "Others", "Others"]
y_test = pd.DataFrame(y_test_data, columns = ['Y'])
y_test = y_test.values.ravel()
logreg = LogisticRegression()
# train the model using X_train_dtm
print("X_train")
print(X_train)
print("y_train")
print(y_train)
print("X_test")
print(X_test)
logreg.fit(X_train, y_train)
# make class predictions for X_test_dtm
y_pred_class = logreg.predict(X_test)
print("y_pred_class")
print(y_pred_class)
代码输出如下:
X_train
NegativeScore NeutralScore PositiveScore
0 0.25 0.00 0.00
1 0.00 0.12 0.00
2 0.00 0.00 0.19
3 0.00 0.00 0.43
y_train
['Negative' 'Others' 'Others' 'Others']
X_test
NegativeScore NeutralScore PositiveScore
0 0.25 0.00 0.00
1 0.00 0.28 0.00
2 0.00 0.00 0.20
3 0.00 0.00 0.30
4 0.00 0.00 0.11
y_pred_class
['Others' 'Others' 'Others' 'Others' 'Others']
y_pred_class 中的第一个值应该是“Negative”。
为什么不能准确预测 Negative 记录? 在这种情况下我是否应该使用其他模型来获得 结果正确吗?【问题讨论】:
无法理解为什么这个问题得到了 -1?需要改变什么? 【参考方案1】:只需添加更多带有“否定”标签的训练案例。逻辑回归不能从一个训练案例进行逻辑推断(它不像孩子那样学习),它需要更多的训练案例,越多越好。 您可以逐步添加训练案例,每次使用 logreg.predict_proba(X_test) 来查看概率如何变化。再添加两个或三个案例可能就足够了,您的模型就可以正常工作了。
【讨论】:
以上是关于使用 scikit-learn python 的逻辑回归输出不匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python (scikit-learn) 计算 FactorAnalysis 分数?
将 PMML 模型导入 Python (Scikit-learn)