Python 如何对训练和测试数据进行逻辑回归?

Python 如何对训练和测试数据进行逻辑回归?,python,pandas,numpy,matplotlib,logistic-regression,Python,Pandas,Numpy,Matplotlib,Logistic Regression,我运行了这段代码,但在lr.fit行上似乎有一个错误。有人知道怎么做吗 from sklearn.model_selection import cross_val_predict from sklearn.model_selection import cross_val_score from sklearn import linear_model from sklearn.linear_model import LogisticRegression from sklearn.model_sele

我运行了这段代码,但在lr.fit行上似乎有一个错误。有人知道怎么做吗

from sklearn.model_selection import cross_val_predict
from sklearn.model_selection import cross_val_score
from sklearn import linear_model
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('2019.csv')
df1 = pd.DataFrame(df,columns=['GDP per capita', 'Social support'])

lr = LogisticRegression()
columns = ['GDP per capita', 'Social support']

X = df[columns]
y = df["Score"]
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.20,random_state=0)

lr.fit(X_train,y_train)
predictions = lr.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(accuracy)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-afa10dbaa367> in <module>
     19 X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.30,random_state=0)
     20 
---> 21 lr.fit(X_train,y_train)
     22 predictions = lr.predict(X_test)
     23 accuracy = accuracy_score(y_test, predictions)

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py in fit(self, X, y, sample_weight)
   1526         X, y = check_X_y(X, y, accept_sparse='csr', dtype=_dtype, order="C",
   1527                          accept_large_sparse=solver != 'liblinear')
-> 1528         check_classification_targets(y)
   1529         self.classes_ = np.unique(y)
   1530         n_samples, n_features = X.shape

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/multiclass.py in check_classification_targets(y)
    167     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    168                       'multilabel-indicator', 'multilabel-sequences']:
--> 169         raise ValueError("Unknown label type: %r" % y_type)
    170 
    171 

ValueError: Unknown label type: 'continuous'
从sklearn.model\u选择导入交叉值\u预测
从sklearn.model_选择导入交叉值_分数
从sklearn导入线性_模型
从sklearn.linear_模型导入逻辑回归
从sklearn.model\u选择导入列车\u测试\u拆分
从sklearn.metrics导入准确性\u分数
将matplotlib.pyplot作为plt导入
作为pd进口熊猫
df=pd.read\u csv('2019.csv')
df1=pd.DataFrame(df,列=[“人均GDP”,“社会支持])
lr=逻辑回归()
列=[“人均GDP”,“社会支持”]
X=df[列]
y=df[“分数”]
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=0.20,随机状态=0)
lr.安装(X_系列、y_系列)
预测=lr.预测(X_检验)
准确度=准确度得分(y检验、预测)
打印(准确性)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
19 X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=0.30,随机状态=0)
20
--->21 lr.装配(X_系列、y_系列)
22预测=lr.预测(X_检验)
23准确度=准确度得分(y检验、预测)
~/opt/anaconda3/lib/python3.7/site-packages/sklearn/linear\u model//u logistic.py适合(自身、X、y、样本重量)
1526 X,y=check_X_y(X,y,accept_sparse='csr',dtype=\u dtype,order=“C”,
1527接受\u大\u稀疏=解算器!=“liblinear”)
->1528检查分类目标(y)
1529 self.classes=np.unique(y)
1530个n_样本,n_特征=X.shape
检查目标中的~/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/multiclass.py(y)
167如果y_类型不在['binary'、'multiclass'、'multiclass multioutput'中,
168“多标签指示器”、“多标签序列”]:
-->169提升值错误(“未知标签类型:%r”%y\u类型)
170
171
ValueError:未知的标签类型:“连续”

最上面是完整的调试错误,我只有在执行此操作时才能执行。X和y旁边的astype(int)。否则,如果我没有这样做,就会出现您看到的错误。

我去Kaggle搜索并发现2019.csv有两列。这些数据与世界各国人民的幸福感以及人均GDP与“幸福指数”的关系有关。很好,对我有用

无论如何,我编辑了2019.csv并保留了两列数据和分数。我有第1列=分数,它必须有所有的0或1(这非常重要)。我为另外两列重命名了GDP和SS,并删除了所有其他列

分数、GDP、SS——2019.csv中的列

不久前,在我的Macbook Pro上以PyCharm运行时,此代码生成以下输出:

数字是“准确的”

0.46875

进程已完成,退出代码为0

所以,最初不是很好(几乎47%的准确率),可以很容易地大大提高

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd

df = pd.read_csv('2019.csv')
df.head()

x = df.drop('Score', axis=1)
y = df.Score

lr = LogisticRegression()
columns = ['GDP', 'SS']

X = df[columns]
y = df["Score"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=0)

lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(accuracy)
“”“ 这就是输出

0.46875

进程已完成,退出代码为0 “”“


希望这有帮助。

回溯到哪里去了?它说我不能使用连续变量,但我的大多数列值都是连续的。所以我有点笨你能分享完整的追踪吗?彻底了解什么是错误。回溯或数据本身在哪里?嘿,伙计们,我在编辑中包含了错误,很抱歉给您添麻烦@UchihaAJHey,我实际上设法解决了我的问题,结果我不得不将我的分数转换为1和0,但我们的准确度值似乎不同。我的准确度值是0.89如果你觉得我帮了你,请接受答案-这对我会非常有帮助谢谢你亲切的父亲节快乐