見出し画像

【練習問題】自動車の走行距離予測 ガソリン1ガロンあたりの走行距離を予測しよう。

SIGNATE Questにて、自動車の走行距離予測 ガソリン1ガロンあたりの走行距離を予測やってみました!

結果

画像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

もう少しこの予測粘ってみます!

この記事が気に入ったらサポートをしてみませんか?