gpt4 book ai didi

python - 值错误: could not convert string to float: 'n'

转载 作者:行者123 更新时间:2023-11-30 09:05:49 26 4
gpt4 key购买 nike

您好,我正在关注 Udemy 上的视频。我们正在尝试应用随机森林分类器。在此之前,我们将数据框中的一列转换为字符串。 “Cabin”列表示诸如“4C”之类的值,但为了减少唯一值的数量,我们希望仅使用第一个数字来映射到新列“Cabin_mapped”。

enter image description here

data['Cabin_mapped'] = data['Cabin'].astype(str).str[0]
# this transforms the letters into numbers
cabin_dict = {k:i for i, k in enumerate(
data['Cabin_mapped'].unique(),0)}

data.loc[:,'Cabin_mapped'] = data.loc[:,'Cabin_mapped'].map(cabin_dict)

data[['Cabin_mapped', 'Cabin']].head()

下面这部分只是将数据分为训练集和测试集。参数对于解决问题并不重要。

X_train_less_cat, X_test_less_cat, y_train, y_test = \
train_test_split(data[use_cols].fillna(0), data.Survived,
test_size = 0.3, random_state=0)

在拟合后我收到一个错误,说我无法将字符串转换为 float 。 rf = RandomForestClassifier(n_estimators=200, random_state=39) rf.fit(X_train_less_cat, y_train)

似乎我需要将其中一个输入转换回 float 才能使用随机森林算法。尽管错误没有出现在教程视频中,但还是出现了这种情况。如果有人能帮助我,那就太好了。

最佳答案

这是完整的示例 - 我已经突出显示了您缺少的部分。您需要将每一列转换为数字,而不仅仅是“小屋”。

!wget https://raw.githubusercontent.com/agconti/kaggle-titanic/master/data/train.csv

import pandas as pd

data = pd.read_csv("train.csv")




data['Cabin_mapped'] = data['Cabin'].astype(str).str[0]
# this transforms the letters into numbers
cabin_dict = {k:i for i, k in enumerate(
data['Cabin_mapped'].unique(),0)}

data.loc[:,'Cabin_mapped'] = data.loc[:,'Cabin_mapped'].map(cabin_dict)

data[['Cabin_mapped', 'Cabin']].head()


from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split


## YOU ARE MISSING THIS BIT, some of your columns are still strings
## they need to be converted to numbers (ints OR floats)
for n,v in data.items():
if v.dtype == "object":
data[n] = v.factorize()[0]
## END of the bit you're missing

use_cols = data.drop("Survived",axis=1).columns

X_train_less_cat, X_test_less_cat, y_train, y_test = \
train_test_split(data[use_cols].fillna(0), data.Survived,
test_size = 0.3, random_state=0)


rf = RandomForestClassifier(n_estimators=200, random_state=39)
rf.fit(X_train_less_cat, y_train)

关于python - 值错误: could not convert string to float: 'n' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com