我正在学习Udacity课程中的回归部分,课程名为"Intro to Machine Learning"
,并正在进行其中的一个迷你项目。
我复制了项目的代码,编写了回归部分,并尝试在Python 2的Jupyter Notebook上运行它。不幸的是,我遇到了以下错误。
ImportError Traceback (most recent call last) <ipython-input-8-433cee6c5e25> in <module>() 15 import pickle 16 sys.path.append("../tools/") ---> 17 from feature_format import featureFormat, targetFeatureSplit 18 dictionary = pickle.load( open("../final_project/final_project_dataset_modified.pkl", "r") ) 19 ImportError: No module named feature_format
我正在处理的代码如下:加载并格式化数据集的修改版本(为什么要修改?我们在异常值迷你项目中移除了一些麻烦点)。绘制一个训练/测试数据的小散点图。在指定位置填写回归代码:
#!/usr/bin/python import sys import pickle sys.path.append("../tools/") from feature_format import featureFormat, targetFeatureSplit dictionary = pickle.load( open("../final_project/final_project_dataset_modified.pkl", "r") ) ### 列出你想查看的特征--列表中的第一项将是"目标"特征 features_list = ["bonus", "salary"] data = featureFormat( dictionary, features_list, remove_any_zeroes=True) target, features = targetFeatureSplit( data ) ### 在回归中需要训练-测试分割,就像分类一样 from sklearn.cross_validation import train_test_split feature_train, feature_test, target_train, target_test = train_test_split(features, target, test_size=0.5, random_state=42) train_color = "b" test_color = "r" ### 你的回归代码在这里! ### 请命名为reg,以便下面的绘图代码能够识别并正确绘制。别忘了将上面的test_color从"b"改为 ### "r",以区分训练点和测试点。 from sklearn import linear_model reg = linear_model.LinearRegression() reg.fit(feature_train,target_train) ### 绘制散点图,颜色编码训练和测试点 import matplotlib.pyplot as plt for feature, target in zip(feature_test, target_test): plt.scatter( feature, target, color=test_color ) for feature, target in zip(feature_train, target_train): plt.scatter( feature, target, color=train_color ) ### 图例标签 plt.scatter(feature_test[0], target_test[0], color=test_color, label="test") plt.scatter(feature_test[0], target_test[0], color=train_color, label="train") ### 绘制回归线,一旦它被编码 try: plt.plot( feature_test, reg.predict(feature_test) ) except NameError: pass plt.xlabel(features_list[1]) plt.ylabel(features_list[0]) plt.legend() plt.show()
回答:
原因
ImportError: No module named feature_format
表示没有名为feature_format
的模块。
该模块已在您使用的存储库中定义,路径为ud120-projects/tools/feature_format.py
。
解决方案1
feature_format
模块的路径在k_means_cluster.py
的第3行声明,作为sys.path.append
的参数传递。
将路径从相对路径更改为绝对路径,例如sys.path.append("ud120-projects/tools/")
。
解决方案2
一切正常,只需执行这个简单的技巧。
克隆GitHub存储库
git clone https://github.com/udacity/ud120-projects.git
进入目录ud120-projects/k_means/
,使用
cd ud120-projects/k_means/
然后使用Python2运行Python脚本
python k_means_cluster.py