计数不使用 iris 数据集将字符串转换为浮点数

Posted

技术标签:

【中文标题】计数不使用 iris 数据集将字符串转换为浮点数【英文标题】:Count not conver string to float using iris dataset 【发布时间】:2021-12-08 03:38:32 【问题描述】:

所以我在我的示例线性回归代码中使用了 iris 数据集。但是当我尝试训练/拟合模型时。我收到一个错误

ValueError: 无法将字符串转换为浮点数:'setosa'

这个错误,我找不到这个错误的修复程序。下面是我正在使用的代码。

iris_df = pd.read_csv(r'C:\Users\Admin\iris.csv')
iris_df.describe()

# Variables
X= iris_df.drop(labels= 'sepal length in cm', axis= 1)
y= iris_df['sepal length in cm']

# Splitting the Dataset 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.47, random_state= 42)

# Instantiating LinearRegression() Model
lr = LinearRegression()

# Training/Fitting the Model
lr.fit(X_train, y_train)

【问题讨论】:

你的意思是 LogisticRegression 吗? 不,我在做线性回归。 是的,我明白了。但是您的数据集中有物种,并且线性回归需要数值。我错误地假设想要构建一个分类器。尽管如此。您需要删除或转换 X 数据中的香料 您可以将其发布为答案吗?我按照你说的做了,现在工作正常。 【参考方案1】:

正如您使用的example 中所写,您需要先转换数据:

# Converting Objects to Numerical dtype
iris_df.drop('species', axis= 1, inplace= True)
target_df = pd.DataFrame(columns= ['species'], data= iris.target)
iris_df = pd.concat([iris_df, target_df], axis= 1)

# Variables
X= iris_df.drop(labels= 'sepal length (cm)', axis= 1)
y= iris_df['sepal length (cm)']

# Splitting the Dataset 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.33, random_state= 101)

# Instantiating LinearRegression() Model
lr = LinearRegression()

# Training/Fitting the Model
lr.fit(X_train, y_train)

# Making Predictions
lr.predict(X_test)
pred = lr.predict(X_test)

# Evaluating Model's Performance
print('Mean Absolute Error:', mean_absolute_error(y_test, pred))
print('Mean Squared Error:', mean_squared_error(y_test, pred))
print('Mean Root Squared Error:', np.sqrt(mean_squared_error(y_test, pred)))

【讨论】:

以上是关于计数不使用 iris 数据集将字符串转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何把浮点型转换为字符型

[C/C++笔面试]不使用库函数将字符串转换为整数

java字符串转数字如何不显示科学计数法

零基础python-20181128

使用有限的类 C 库将科学计数法字符串中的数字转换为浮点数

字符串 整型以及浮点型 转换