python中的逻辑回归测试输入格式帮助

Posted

技术标签:

【中文标题】python中的逻辑回归测试输入格式帮助【英文标题】:Logistic Regression test input format help in python 【发布时间】:2021-01-09 13:30:48 【问题描述】:

我确实有以下数据集。

我已经创建了 Logistic 回归 并检查了准确性并且工作正常。所以现在的要求是我有一个 Age 30EstimatedSalary 50000 的新数据,我想预测 Purchased 是 0 还是 1。如何传递新值3050000 在我的 python 代码中。

下面是我用过的python代码。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
%matplotlib inline

dataset = pd.read_csv(r"suv_data.csv")

X=dataset.iloc[:,[0,1]].values
y=dataset.iloc[:,2].values

X_train,X_test,y_train,y_test=train_test_split(X, y, test_size=0.2, random_state=1)

sc=StandardScaler()
X_train=sc.fit_transform(X_train)
X_test=sc.transform(X_test)

classifier=LogisticRegression(random_state=0)
classifier.fit(X_train,y_train)

y_pred=classifier.predict(X_test)

accuracy_score(y_test,y_pred)*100

问候,

Bharath Vikas

【问题讨论】:

您需要添加更多详细信息。 Y 假设这些是您数据中的 dataset.iloc[:,[2,3]].values 列。但是I've a new data with Age 30 and EstimatedSalary 50000 新数据是什么意思?一个.txt?数据框? 您提供的示例数据与代码 sn-p 不一致:X=dataset.iloc[:,[2,3]].values 这一行会抛出错误,因为您只有 3 列,因此列索引只有 [0,1,2] 和第 3 列不在那里。 我刚刚编辑了它,发布问题时忘记进行更改。 新值 30 和 50000 是否已经在数据集中? @seralouk 他们不在数据集中。我想在 python 代码中传递它们。 【参考方案1】:

一般来说,要评估(即在 sklearn 中调用 .predict)训练模型,您需要输入与模型训练样本具有相同形状的样本。

在您的情况下,我想(请参阅我对您的问题的评论)您希望使用Purchased 作为标签在训练集中包含带有AgeEstimatedSalary 的样本。

然后,要对单个样本进行测试,只需尝试以下操作:

single_test_sample = pd.DataFrame('Age':[30], 'EstimatedSalary':[50000]).iloc[:,[0,1]].values
single_test_sample = sc.transform(single_test_sample)
single_test_prediction = classifier.predict(single_test_sample)

请注意,您还可以在测试数据框AgeEstimatedSalary 列中添加更多值,现在我只添加了您感兴趣的样本。如果添加更多,模型将输出每行的预测测试数据框。

另请注意,您的代码和我的代码在训练/测试集结束时也可以在没有此 .values 的情况下工作,因为 sklearn 已经提供了带有 pandas 数据帧的功能。

【讨论】:

感谢您,代码运行良好。我已尝试通过编辑您的代码来添加更多值并且正在工作。【参考方案2】:

您的问题不清楚,但我知道您需要使用拟合模型来预测新样本。

安装好模型后,只需使用这个:

new_sample = np.array([[30,50000]]) # 2D numpy array

new_sample_sc = sc.transform(new_sample)

y_pred_new = classifier.predict(new_sample_sc)
print(y_pred_new)

【讨论】:

OP 使用的是 pandas,这个解决方案可以工作,但更神秘且容易出错。另外并没有说明sklearn实际上可以和pandas齐头并进,也不需要将数据转换成numpy数组。

以上是关于python中的逻辑回归测试输入格式帮助的主要内容,如果未能解决你的问题,请参考以下文章

用于 Python 的逻辑回归和 KNN 等模型的输入格式

Python中的多元逻辑回归显示错误

Python 中的逻辑回归和交叉验证(使用 sklearn)

用Python开始机器学习(7:逻辑回归分类) --好!!

逻辑回归的原理和python实现

python逻辑回归怎么求正系数