gpt4 book ai didi

python - Python的sklearn(DecisionTreeClassifier,SVM)之间的区别?

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

我是机器学习新手 - 特别是分类技术。

我已经在线阅读了一些教程,并且正在使用 iris data set 。我尝试使用

将数据集拆分为训练和测试
train, test = train_test_split(df,
test_size=test_size,
train_size=train_size,
random_state=random_state)

随后,我找到了两种拟合模型的方法(DecisionTreeClassifier 和 SVM):

dt = DecisionTreeClassifier(min_samples_split=20, random_state=99)
clf = svm.SVC(kernel='linear', C=1)

这两个模型都允许我使用 .fit() 和 .score() 方法。我尝试对不同大小和随机状态的数据进行重新采样,但两个模型得到的分数完全相同,均为 0.9852。难道我做错了什么?

此外,是否需要将我的目标变量(“类”)转换为所述的数值 here ?我尝试用原始字符串值拟合数据框,并且得到相同的结果。非常感谢任何帮助!

最佳答案

使用train_test_split的正确方法如下:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

#Load Iris data, X: features and y:target/labels
df = load_iris()
y = df.target
X = df.data

#Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state= 99)

#Fit the 2 classifiers
dt = DecisionTreeClassifier(min_samples_split=20, random_state=99)
clf = SVC(kernel='linear', C=1)

dt.fit(X_train, y_train)
y_predicted_dt = dt.predict(X_test)
scores_dt = accuracy_score(y_test, y_predicted_dt)
print(scores_dt)

clf.fit(X_train, y_train)
y_predicted_clf = clf.predict(X_test)
scores_clf = accuracy_score(y_test, y_predicted_clf)
print(scores_clf)

结果:

#Accuracy of dt classifier
0.933333333333

#Accuracy of clf classifier
0.983333333333

底线:

就您而言,您仅将 train_test_split 中的 df 作为 X 传递。

您不需要转换三个类。只需使用 accuracy_scorecross_val_score 函数即可。

关于python - Python的sklearn(DecisionTreeClassifier,SVM)之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45127179/

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