3章ではデータをダウンロードしてきて回帰分析をする。 データ
カレントディレクトリをchap3に移動し、そこでZIPファイルをダウンロードして展開するという本文のp.70からp.72の操作をするためには、作業にGoogle colabratoryを用いているために本文と若干異なるコードを書く必要が生じたので、自分が書いたコードをここに示しておく。 参考
!pwd !mkdir chap3 %cd ./chap3
#必要なライブラリ import requests, zipfile from io import StringIO import io
#ZIPファイルをダウンロードして展開 url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00356/student.zip' r = requests.get(url, stream=True) z =zipfile.ZipFile(io.BytesIO(r.content)) z.extractall()
練習問題3-1 student-por.csvを読み込んで要約統計量を提示する。
data_por = pd.read_csv('student-por.csv', sep=";") #要約統計量 data_por.describe()
練習問題3-2 数学のデータとポルトガル語のデータをマージ
#数学のデータとポーランド語のデータをマージして、要約統計量を求める new_data = pd.merge(student_data_math, data_por, on=['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'nursery', 'internet' ], suffixes=('_math', '_por')) new_data.describe()
練習問題 3-3 Medu, Gedu, G3_mathを選んで散布図とヒストグラムを作成
Todo: ヒストグラムを作成 sns.pairplot(new_data[["Medu", "Fedu", "G3_math"]])
p.93 練習問題
練習問題
1, student-pr.csvのG3とG1を用いて回帰分析して、回帰係数、切片、決定係数を求める
2, 散布図と回帰直線を合わせてグラフ化
3, G3を目的変数、absencesを説明変数として回帰分析して、回帰係数、切片、決定係数を求める。散布図と回帰直線を合わせてグラフ化して結果を考察する。
por_data = pd.read_csv('student-por.csv', sep=";") #print(por_data.head()) #各種要約統計量 #print(por_data.describe()) reg2 = linear_model.LinearRegression() X = por_data.loc[:, ['G3']].values Y = por_data['G1'].values reg2.fit(X, Y) #回帰直線の図示 plt.plot(X, reg2.predict(X)) #回帰係数、切片、決定係数 print("回帰係数は", reg2.coef_) print("切片は", reg2.intercept_) print("決定係数は", reg2.score(X, Y))
#実際の散布図と回帰直線を合わせて図示 plt.plot(X, Y, 'o') plt.plot(X, reg2.predict(X)) plt.grid(True)
#G3を目的変数、absencesを説明変数として回帰分析を行う X = por_data.loc[:, ['absences']].values Y = por_data['G3'].values reg3 = linear_model.LinearRegression() reg3.fit(X, Y) #回帰直線と散布図を図示 plt.plot(X, Y, 'o') plt.plot(X, reg3.predict(X)) plt.xlabel("欠席数") plt.ylabel("G3") plt.grid(True) #回帰係数、切片、決定係数 print("回帰係数", reg3.coef_) print("切片", reg3.intercept_) print("決定係数", reg3.score(X, Y))
考察
決定係数は0.01以下であり、散布図と回帰直線を図示したグラフからも、回帰直線の当てはまりが非常に良くないことが分かる。
Todo 章末問題