在我们学习机器学习的时候,往往会碰到许多的新手坑,这里简单介绍下自己遇到的一个坑,以及解决思路

以下是我之前在学习决策树遇到的一个坑,初始代码如下:

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)

直接输出了打印结果【粗心.....】

在通过将级联数据赋予y,再次重新执行,得到新的y_预测数据

修改之后执行所有代码,图形绘制成功。

故此提醒各位“码”员在编写时得多注意细节,对于遇到得问题先考虑最有可能出现得错误原因,再将模块代码重新看一遍,因为也可能是你少打的一个符号问题,实在搞不定就求助于百度(可以解决大多问题),谷歌(英文水平得有点,毕竟基本都是英语,但绝对能解决所有问题),希望这篇纠错能对你提供小小帮助。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐