如何使用OneHotEncoder对csv进行编码?

sxissh06  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(118)

我正在训练一个人工智能来预测足球比赛的结果。但我总是得到以下错误:

ValueError: could not convert string to float: '2023-09-30T14:00Z'

该图片是CSV文件,包含(日期,比赛名称,短名称,季节_年,季节_名称,季节_类型_名称,季节_类型_缩写,主页,客场,主页_结果,客场_结果)作为列:

以下是我尝试过的:

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn import preprocessing
df = pd.read_csv("fulldata.csv")
x = df.drop(columns=['Home_Results', 'Away_Results'])
y = df['Home_Results']
z = df['Away_Results']
model = LogisticRegression()
model.fit(x, y)

下面是traceback:

ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_14808\2162871695.py in ?()
      8 y = df['Home_Results']
      9 z = df['Away_Results']
     10 
     11 model = LogisticRegression()
---> 12 model.fit(x, y)

c:\Users\threa\anaconda3\Lib\site-packages\sklearn\base.py in ?(estimator, args, kwargs)
   1148                 skip_parameter_validation=(
   1149                     prefer_skip_nested_validation or global_skip_validation
   1150                 )
   1151             ):
-> 1152                 return fit_method(estimator,args, kwargs)

c:\Users\threa\anaconda3\Lib\site-packages\sklearn\linear_model_logistic.py in ?(self, X, y, sample_weight)
   1204             _dtype = np.float64
   1205         else:
   1206             _dtype = [np.float64, np.float32]
   1207 
-> 1208         X, y = self._validate_data(
   1209             X,
   1210             y,
   1211             accept_sparse="csr",
...
   2085         if (
   2086             astype_is_view(values.dtype, arr.dtype)
   2087             and using_copy_on_write()

ValueError: could not convert string to float: '2023-09-30T14:00Z'

我在互联网上看了看,我发现通过编码的CSV与OneHotEncoder,它会工作.但是我已经尝试了sklearn.preprocessing.OneHotEncoding和pandas.get_dummies,显示了很多错误,我不知道。所以我来问你。

lc8prwob

lc8prwob1#

我不知道你的问题是什么。
你的意思是,你在处理OneHotEncoding或训练模型时得到了一个错误ValueError: could not convert string to float: '2023-09-30T14:00Z'
下面是使用这两种方法的OneHotEncoding示例。

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

df = pd.read_csv('sample.csv')
data = df[['Season_Name']]

print('OneHotEncoder------------')
enc = OneHotEncoder()
encoded = enc.fit_transform(data)
print(enc.get_feature_names_out())

print('get_dummies------------')
dummies = pd.get_dummies(data)
print(dummies)

我使用了与您类似的虚拟数据。

Date,Match_Name,Short_Name,Season_Year,Season_Name
2023-09-30T14:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 English Premier League
2023-09-23T19:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 UEFA Champions League
2023-09-24T19:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 English Premier League
2023-08-21T14:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 English Premier League
2023-08-11T21:00Z,ManU at vs Cr,CRY @ MAN,2023,2023 Club Friendly
2023-07-30T14:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 English Premier League
2023-07-30T17:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 UEFA Champions League
2023-06-30T14:00Z,ManU at vs Cr,CRY @ MAN,2023,2023-24 English Premier League

注意,OneHotEncoding和get_dummies可以应用于分类数据。

我使用Season_Name作为例子之一。
结果将是

OneHotEncoder------------
['Season_Name_2023 Club Friendly'
 'Season_Name_2023-24 English Premier League'
 'Season_Name_2023-24 UEFA Champions League']
get_dummies------------
   Season_Name_2023 Club Friendly  Season_Name_2023-24 English Premier League  Season_Name_2023-24 UEFA Champions League
0                           False                                        True                                      False
1                           False                                       False                                       True
2                           False                                        True                                      False
3                           False                                        True                                      False
4                            True                                       False                                      False
5                           False                                        True                                      False
6                           False                                       False                                       True
7                           False                                        True                                      False

自己一步一步地努力。
例如,您可以创建一个更简单的数据集,然后尝试检查OneHotEncoding的结果。

相关问题