ながれとよどみ

自分が解いた問題の解法など

データサイエンティスト養成講座3章の演習

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以下であり、散布図と回帰直線を図示したグラフからも、回帰直線の当てはまりが非常に良くないことが分かる。

f:id:nqwerty:20210905125803p:plain

Todo 章末問題