gpt4 book ai didi

python - 用于分类变量的 Scikit-learn DictVectorizer

转载 作者:行者123 更新时间:2023-11-30 08:55:19 27 4
gpt4 key购买 nike

我有一个 .csv 文件,其条目如下所示:

b0002 ,0,>0.00 ,3,<=0.644 ,<=0.472 ,<=0.690 ,<=0.069672 ,>15.00 ,>21.00 ,>16.00 ,>6.00 ,>16.00 ,>21.00 ,>9.00 ,> 11.00 ,>20.00 ,>7.00 ,>4.00 ,>9.00 ,>9.00 ,>13.00 ,>8.00 ,>14.00 ,>3.00 ,"(1.00, 8.00] ",>10.00 ,>9.00 ,>183.00 ,1

我想使用 GaussianNB() 对此进行分类。到目前为止,我设法使用另一个带有数值数据的 csv 来做到这一点,现在我想使用它,但我被卡住了。

转换分类器的分类数据的最佳方法是什么?

这个:

p = read_csv("C:path to\\file.csv")

trainSet = p.iloc[1:20,2:5] //first 20 rows and just 3 attributes
dic = trainSet.transpose().to_dict()

vec = DictVectorizer()
vec.fit_transform(dic)

给出这个错误:

Traceback (most recent call last):
File "\prova.py", line 23, in <module>
vec.fit_transform(dic)
File "\dict_vectorizer.py", line 142, in fit_transform
return self.transform(X)
File "\\dict_vectorizer.py", line 230, in transform
values.append(dtype(v))
TypeError: float() argument must be a string or a number

转换分类器的分类数据的最佳方法是什么?

最佳答案

问题在于,当调用 .to_dict() 时,转置的“dataframe”会返回嵌套的 dict

#create a dummy frame
df = pd.DataFrame({'factor':['a','a','a','b','c','c','c'], 'factor1':['d','a','d','b','c','d','c'], 'num':range(1,8)})

#transpose the dataframe and get the inner dict from to_dict()
feats =df.T().to_dict().values()

from sklearn.feature_extraction import DictVectorizer
Dvec = DictVectorizer()
Dvec.fit_transform(feats).toarray()

解决方案是在dict上调用.values()来获取内部dict

Dvec获取新功能名称:

Dvec.get_feature_names()

关于python - 用于分类变量的 Scikit-learn DictVectorizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393460/

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