【練習問題】自動車の走行距離予測 ガソリン1ガロンあたりの走行距離を予測しよう。
SIGNATE Questにて、自動車の走行距離予測 ガソリン1ガロンあたりの走行距離を予測やってみました!
結果
1452位でした!ダメダメでしたが、google Colaboratoryで出力したので忘れないように記録します!
あとで振り返えられるように、だめな部分もそのまま記録しておきます^^;
from google.colab import drive
drive.mount('/content/drive/')
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression as LR
from sklearn.metrics import mean_squared_error as MSE
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
import pandas as pd
train = pd.read_csv("/content/drive/My Drive/SIGNATE_nenpi/train.tsv","\t")
test = pd.read_csv("/content/drive/My Drive/SIGNATE_nenpi/test.tsv","\t")
sample_submit= pd.read_csv("/content/drive/My Drive/SIGNATE_nenpi/sample_submit.csv",header=None)
train_test.info()
train_test["horsepower"].unique()
horsepowerがobujectだったので調べたら”?”があった
#処理しやすいように 、テストとトレインをくっつける
train_test = pd.concat([train,test],axis = 0)
train_test[(train_test["horsepower"] == "?")]
?の行だけインデックスみて
no = [24,113,145,175,70,112]
data = train_test.drop(no,axis = 0)
消して、平均をだして。
data["horsepower"].mean()
105だったので、それを
train_test["horsepower"] = train_test["horsepower"].replace("?","105")
train_test["horsepower"] = train_test["horsepower"].astype(float)
置き換えて、obujectをfloatに変換
#ワンホットベクトル
train_test = train_test.drop("id",axis = 1)
dummy_df = pd.get_dummies(train_test["car name"])
train_test = pd.concat([train_test,dummy_df],axis = 1)
train_test = train_test.drop(columns=['car name'])
mpgがnullだった分をテストと判断。もとのtrain とtestに分割
train_X = train_test[~train_test["mpg"].isnull()].drop("mpg",axis = 1)
train_Y = train["mpg"]
test_x = train_test[train_test["mpg"].isnull()].drop("mpg",axis = 1)
trainを検証ように分割
X_train,X_test,y_train,y_test = train_test_split(train_X,train_Y,random_state = 20)
lr = LR()
lr.fit(X_train,y_train)
y_pred_train = lr.predict(X_train)
y_pred_test = lr.predict(X_test)
test_test = lr.predict(test_x)
mse_train = MSE(y_pred_train,y_train)
mse_test = MSE(y_pred_test,y_test)
この時点でmseが訓練結果0.63 検証して13.07
ルートで計算すると約0.8、検証が3.7
だいたい、平均して3.7前後乖離しているということ、、、
とりあえずはデータが400しか無いのに、ワンホットベクトルで170もの特徴量を作ってしまったのが多分だめなのかなと。
あと、対数もとっていない。
その辺りを改善しないといけないのかなといった感じです
最後に出力
sample_submit[1] = test_test
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
PATH_MYDRIVE="/content/drive/My Drive/SIGNATE_nenpi"
sample_submit.to_csv(f'{PATH_MYDRIVE}/wakoushi.csv', index=False)
!ls -lrt '{PATH_MYDRIVE}'
これでCSVが出力されますが、ヘッダーが余計なのがあるので、そこは実際に開いて手動でけしましたw
もう少しこの予測粘ってみます!
この記事が気に入ったらサポートをしてみませんか?