在我们学习机器学习的时候,往往会碰到许多的新手坑,这里简单介绍下自己遇到的一个坑,以及解决思路
以下是我之前在学习决策树遇到的一个坑,初始代码如下:
X = np.linspace(-100,100,100)
y = np.sin(X)
z = np.cos(X)
#以上代码能够绘制一个由100个点构成的圆
#将y,z进行级联
np.concatenate([y.reshape(-1,1),z.reshape(-1,1)],axis = 1)
#导入决策树及绘图模块
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
%matplotlib
#通过决策树进行数据绘图
tree =DecisionTreeRegressor(max_depth=5)
tree.fit(X.reshape(-1,1),y)
X_test = np.linspace(-100,100,300).reshape(-1,1)
y_ = tree.predict(X_test)
plt.scatter(y_[:,0],y_[:,1])
熟悉机器学习的大佬应该一眼就能看出其中的问题所在:
问题的结点就是在于数据的不匹配,当我出现这个问题的第一个想法就是可能是维度不匹配,但通过测试发现不是。。。
经过反复推敲及百度查看类似问题(发现百度上大多给的是维度不匹配问题)最终发现在对数据进行级联时没有将数据保存到y中,因为在我的分块测试中是通过
np.concatenate([y.reshape(-1,1),z.reshape(-1,1)],axis = 1)
直接输出了打印结果【粗心.....】
修改之后执行所有代码,图形绘制成功。
故此提醒各位“码”员在编写时得多注意细节,对于遇到得问题先考虑最有可能出现得错误原因,再将模块代码重新看一遍,因为也可能是你少打的一个符号问题,实在搞不定就求助于百度(可以解决大多问题),谷歌(英文水平得有点,毕竟基本都是英语,但绝对能解决所有问题),希望这篇纠错能对你提供小小帮助。