Python 训练logistic回归模型时出错
我试图将逻辑回归模型拟合到数据集,在训练数据时,我得到以下错误:Python 训练logistic回归模型时出错,python,pandas,machine-learning,scikit-learn,logistic-regression,Python,Pandas,Machine Learning,Scikit Learn,Logistic Regression,我试图将逻辑回归模型拟合到数据集,在训练数据时,我得到以下错误: 1 from sklearn.linear_model import LogisticRegression 2 classifier = LogisticRegression() ----> 3 classifier.fit(X_train, y_train) ValueError: could not convert string to float: 'Cragorn' 代码片段如下所示: im
1 from sklearn.linear_model import LogisticRegression
2 classifier = LogisticRegression()
----> 3 classifier.fit(X_train, y_train)
ValueError: could not convert string to float: 'Cragorn'
代码片段如下所示:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('predict_death_in_GOT.csv')
data.head(10)
X = data.iloc[:, 0:4]
y = data.iloc[:, 4]
plt.rcParams['figure.figsize'] = (10, 10)
alive = data.loc[y == 1]
not_alive = data.loc[y == 0]
plt.scatter(alive.iloc[:,0], alive.iloc[:,1], s = 10, label = "alive")
plt.scatter(not_alive.iloc[:,0], not_alive.iloc[:,1], s = 10, label = "not alive")
plt.legend()
plt.show()
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
print(X_train, y_train)
print(X_test, y_test)
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
**classifier.fit(X_train, y_train)**
数据集如下所示:
Sr No name houseID titleID isAlive
0 0 Viserys II Targaryen 0 0 0
1 1 Tommen Baratheon 0 0 1
2 2 Viserys I Targaryen 0 0 0
3 3 Will (orphan) 0 0 1
4 4 Will (squire) 0 0 1
5 5 Willam 0 0 1
6 6 Willow Witch-eye 0 0 0
7 7 Woth 0 0 0
8 8 Wyl the Whittler 0 0 1
9 9 Wun Weg Wun Dar Wun 0 0 1
我浏览了网页,但找不到任何相关的解决方案。请帮助我解决此错误。
谢谢大家! 不能将字符串传递给fit方法。
列名需要转换为float。
好的方法是使用:
鉴于上述数据集样本,以下是如何执行标签编码的可复制示例:
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
le = preprocessing.LabelEncoder()
data.name = le.fit_transform(data.name)
X = data.iloc[:, 0:4]
y = data.iloc[:, 5]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
print(classifier.coef_,classifier.intercept_)
结果模型系数和截距:
[[ 0.09253555 0.09253555 -0.15407024 0. ]] [-0.1015314]
不能将字符串传递给fit方法。
列名需要转换为float。
好的方法是使用:
鉴于上述数据集样本,以下是如何执行标签编码的可复制示例:
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
le = preprocessing.LabelEncoder()
data.name = le.fit_transform(data.name)
X = data.iloc[:, 0:4]
y = data.iloc[:, 5]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
print(classifier.coef_,classifier.intercept_)
结果模型系数和截距:
[[ 0.09253555 0.09253555 -0.15407024 0. ]] [-0.1015314]
Sklearn模型只接受浮点数作为参数。在将变量传递给fit方法之前,需要将变量转换为浮点。一种方法是为每个包含字符串的列创建一系列伪变量。选中:Sklearn模型只接受浮点数作为参数。在将变量传递给fit方法之前,需要将变量转换为浮点。一种方法是为每个包含字符串的列创建一系列伪变量。检查: