为了账号安全,请及时绑定邮箱和手机立即绑定

机器学习算法得分变化,数据或步骤没有任何变化

机器学习算法得分变化,数据或步骤没有任何变化

撒科打诨 2021-09-25 16:33:16
我是机器学习的新手,并开始在 Kaggle 上解决泰坦尼克号问题。我编写了一个简单的算法来预测测试数据的结果。我的问题/困惑是,每次我使用相同的数据集和相同的步骤执行算法时,得分都会发生变化(代码中的最后一条语句)。我无法理解这种行为?代码:# importsimport numpy as npimport pandas as pdfrom sklearn.tree import DecisionTreeClassifier# load datatrain = pd.read_csv('train.csv')test = pd.read_csv('test.csv')results = pd.read_csv('gender_submission-orig.csv')# prepare training and test datasety = train['Survived']X = train.drop(['Survived', 'SibSp', 'Ticket', 'Cabin', 'Embarked', 'Name'], axis=1)test = test.drop(['SibSp', 'Ticket', 'Cabin', 'Embarked', 'Name'], axis=1)y_test = results['Survived']X = pd.get_dummies(X)test = pd.get_dummies(test)# fill the missing valuesage_median = X['Age'].median()fare_median = X['Fare'].median()X['Age'] = X['Age'].fillna(age_median)test['Age'].fillna(age_median, inplace=True)test['Fare'].fillna(fare_median, inplace=True)# train the classifier and predictclf = DecisionTreeClassifier()clf.fit(X, y)predict = clf.predict(test)# This is the score which changes with execution.print(round(clf.score(test, y_test) * 100, 2)) 
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这是该领域的新人面临的常见挫折。原因是这种算法固有的随机性,正如评论中已经建议的那样,简单而直接的补救措施是明确设置随机数生成器的状态(种子),例如:

clf = DecisionTreeClassifier(random_state=42)

但是随着数值的不同,分数也会发生变化。那么我们如何找到最优或正确的值呢?

同样,这是意料之中的,无法克服的:这种随机性是一种基本且不可逆转的随机性,您根本无法超越。按照上面的建议设置随机种子只是确保了特定模型/脚本的可重复性,但找到任何“最佳”值,你在这里的意思(即关于随机部分)是不可能的。从统计学上讲,随机种子的不同值产生的结果应该是相似的(在统计意义上),但这种相似性的精确量化是严格统计中的一项练习,远远超出了本文的范围。

随机性通常是一个不直观的领域,而随机数生成器 (RNG) 本身就是奇怪的动物……作为一般性说明,您可能有兴趣知道RNG 甚至在不同语言和框架之间都不“兼容”。


查看完整回答
反对 回复 2021-09-25
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信