python中的逻辑回归测试输入格式帮助
Posted
技术标签:
【中文标题】python中的逻辑回归测试输入格式帮助【英文标题】:Logistic Regression test input format help in python 【发布时间】:2021-01-09 13:30:48 【问题描述】:我确实有以下数据集。
我已经创建了 Logistic 回归 并检查了准确性并且工作正常。所以现在的要求是我有一个 Age 30 和 EstimatedSalary 50000 的新数据,我想预测 Purchased 是 0 还是 1。如何传递新值30 和 50000 在我的 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
作为标签在训练集中包含带有Age
和EstimatedSalary
的样本。
然后,要对单个样本进行测试,只需尝试以下操作:
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)
请注意,您还可以在测试数据框Age
和EstimatedSalary
列中添加更多值,现在我只添加了您感兴趣的样本。如果添加更多,模型将输出每行的预测测试数据框。
另请注意,您的代码和我的代码在训练/测试集结束时也可以在没有此 .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中的逻辑回归测试输入格式帮助的主要内容,如果未能解决你的问题,请参考以下文章