Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中实现的RandomForestClassifier不起作用_Python_Machine Learning_Random Forest - Fatal编程技术网

在Python中实现的RandomForestClassifier不起作用

在Python中实现的RandomForestClassifier不起作用,python,machine-learning,random-forest,Python,Machine Learning,Random Forest,我有这个csv文件: name,likes,trabels,rapn,aps,class 0,name1,22,0.3,0.893818566,2,0 1,name2,2,0.3,0.910212895,2,0 2,zendym.,6,1,0.195939375,1,0 3,smok,16,0.3,0.56267631,2,0 4,d,3,0.3,0.01069298,1,0 我想根据名称的其他属性对其进行分类。我正在使用以下代码: import pandas as pd

我有这个csv文件:

name,likes,trabels,rapn,aps,class
0,name1,22,0.3,0.893818566,2,0
1,name2,2,0.3,0.910212895,2,0
2,zendym.,6,1,0.195939375,1,0
3,smok,16,0.3,0.56267631,2,0
4,d,3,0.3,0.01069298,1,0
我想根据名称的其他属性对其进行分类。我正在使用以下代码:

import pandas as pd 
from sklearn import datasets

df=pd.read_csv('book4.csv')

from sklearn.model_selection import train_test_split

X=df[['likes', 'trables', 'rapn', 'aps']]
y=df['class']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.7)

from sklearn.ensemble import RandomForestClassifier

clf=RandomForestClassifier()

clf.fit(X_train,y_train)

y_pred=clf.predict(X_test)

from sklearn import metrics

print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

这是我的第一个机器学习项目。问题是,当我运行它时,我得到
[0 0…,0 0 0]
精度=1
(!!!!!!!!!)。此外,当我检查每个功能的重要性时,我也会得到每个功能的
0.0
。我不明白我做错了什么。有人能帮我吗

第一件事是,如果这个数据集是您所有的,那么它太小了,无法实现随机森林分类器(这是数据饥饿)甚至任何机器学习。接下来,您有一个极其不平衡的类问题,“机器”不知道除了
0
之外是否还有其他
类。这就是为什么所有预测都是零。

你有一个不平衡的班级问题。所有类都只映射到
0
。提供的示例是整个数据集吗?它不包含
1
否的任何行,这是数据集的一部分。但是对于整个数据集,
class
0
。@mad_u我知道了。我应该映射这些类。问题是,我希望算法能够找到类——在这种情况下,我是否使用了错误的技术?在做出预测之前,实际上是在允许算法从类中学习。如果它只包含
0
类,则表示它没有看到任何其他类类型。因此,无论发生什么情况,它都会预测结果有利于
0
。如果有意义的话,您实际上是在数据集中引入了偏差。