예처리에서 정밀도가 높아질까요?특별편

4저번 4가지 예처리 방법 사용
(dataset)cacner_datasets
sklearn.svm의 SVC
사용해 보니 4개의 정밀도가 모두 높아졌다.
이번에 재현성을 확인하려고 다른 데이터로 해봤어요.
(dataset)boston_datasets
sklearn.linear_비디오 링크
※boston_데이터sets는 보스턴 주택 가격과 특징량의 데이터 집합으로 유명하다.단지데이터sets의 분류(이산 데이터)와 달리 가격 예측(연속 데이터)이기 때문에 SVC를 사용할 수 없습니다.
그리고 csv에서 boston 데이터sets를 다운로드해서 경로를 통해 데이터를 읽고 있습니다.따라서 경로 부분은 생략되었다.
애초에 상대 패스인지 절대 패스인지 전혀 몰랐다고 할 수 있다.지금도 잘 못해요.

우선raw 데이터로 정밀도를 확인합니다


qiita.rb
#csvファイルはdataframeだと扱いやすいのでpandasを呼ぶ
import pandas as pd
from sklearn.model_selection import train_test_split
from pandas import Series,DataFrame
boston_df = pd.read_csv("boston_rawdata.csv")
boston_df.head()
이미 완전히 유명해졌기 때문에 지금까지 데이터 구조는 이런 느낌이다.
오른쪽 끝의 MEDV(주택가격)는 목적 변수다.기타 설명 변수는 모두 13개의 변수가 있다.

qiita.rb
# 説明変数。dropメソッドでMEDVを落とす。つまりMEDV以外を選択。
X = boston_df.drop('MEDV',1)
# 目的変数
y = boston_df.MEDV

from sklearn.linear_model import LinearRegression
from sklearn.metrics import accuracy_score
# インスタンスを作る
lr=LinearRegression()
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=42)
# データ形状を見ておこう
print(X_train.shape,y_train.shape)
(379, 13) (379,)

#訓練データとテストデータのモデルを作る。
lr_train=LinearRegression().fit(X_train,y_train)
lr_test=LinearRegression().fit(X_test,y_test)

#それぞれの精度を見てみよう
print("Scaled train set accuray:
   {:.2f}".format(lr_train.score(X_train,y_train)))
print("Scaled test set accuray:
   {:.2f}".format(lr_test.score(X_test,y_test)))
Scaled train set accuray:0.75
Scaled test set accuray:0.76
정밀도 방면의 훈련 데이터는 0.75이고 테스트 데이터는 0.76이다.오버피팅도 일으키지 않은 것 같고 정밀도도 높아요.괜찮지 않아요?
여기서부터 본격적인 퍼포먼스!프리 프로세싱하면 0.76 이상인가요?해보자!

사전 처리 StandardScaller를 사용해 보았습니다.


나는 개인적으로 이 수법을 비교적 쉽게 이해할 수 있기 때문에 이번에는 여기에 있다.
qiita.rb
from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
scaler.fit(X_train)
#こんなアウトプットが出ます。
StandardScaler(copy=True, with_mean=True, with_std=True)

#では転換(fitとtransformはセットで覚える!)
X_train_scaled=scaler.transform(X_train)
X_test_scaled=scaler.transform(X_test)
lr=LinearRegression().fit(X_train_scaled,y_train)
자, 준비됐습니다.
qiita.rb
print("Scaled test set accuray:
    {:.2f}".format(lr.score(X_test_scaled,y_test)))
Scaled test set accuray:0.68
어?정밀도는 0.68이다.raw의test 데이터의 정밀도 0.76에 비해 1할 이상 떨어졌다.

결론(어쨌든...)


전혀 불안한 샘플로 결론을 내리기가 정말 죄송하고요.
1.미리 처리하면 꼭 올라갈 수 있지 않나요?
2. 예처리 중의 목적 변수는 이산 데이터에서 더욱 적합합니까?그러니까 분류?
3. 내가 어디서 잘못했지?
어쨌든 결론이야.
불쾌하다

좋은 웹페이지 즐겨찾기