ML代码 - NameError:未定义名称'prepare_country_stats'

时间:2017-11-05 19:40:12

标签: machine-learning nameerror

这是ML代码。我收到NameError:名称'prepare_country_stats'未定义。有人可以指出我错过的错误。我将非常感激。

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn

oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands = ',')
gdp_per_capita = pd.read_csv("GDP.csv", thousands=',',delimiter='\t', encoding='latin1', na_values="n/a")

country_stats = prepare_country_stats(oecd_bli_2015, GDP)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life Satisfaction"]]

country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')
plt.show()

model=sklearn.linear_model.LinearRegression()

model.fit(X,y)

X_new=[[22587]]
print(model.predict(X_new))

3 个答案:

答案 0 :(得分:1)

这是Géron的书动手机器学习中的示例1-1。 在这种情况下,如果仅复制粘贴代码,它将无法正常工作。实际上,在前一页的脚注6表示:

  

代码假定已经定义了prepare_country_stats():它将GDP和生活满意度数据合并到单个Pandas数据框中。

因此,他们认为您已经自己编写了该函数。 希望这会有所帮助!

答案 1 :(得分:0)

unsubscribe似乎是一个函数,您已通过prepare_country_statsoecd_bli_2015。您需要在脚本中的某处定义此功能。 (同样,似乎未定义GDP)。

答案 2 :(得分:0)

我认为这就是你想要的。

def prepare_country_stats(oecd_bli, gdp_per_capita):
    oecd_bli = oecd_bli[oecd_bli["INEQUALITY"]=="TOT"]
    oecd_bli = oecd_bli.pivot(index="Country", columns="Indicator", values="Value")
    gdp_per_capita.rename(columns={"2015": "GDP per capita"}, inplace=True)
    gdp_per_capita.set_index("Country", inplace=True)
    full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,
                                  left_index=True, right_index=True)
    full_country_stats.sort_values(by="GDP per capita", inplace=True)
    remove_indices = [0, 1, 6, 8, 33, 34, 35]
    keep_indices = list(set(range(36)) - set(remove_indices))
    return full_country_stats[["GDP per capita", 'Life satisfaction']].iloc[keep_indices]

从这里开始:

https://github.com/ageron/handson-ml/blob/master/01_the_machine_learning_landscape.ipynb