예처리에서 정밀도가 높아질까요?특별편
(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. 내가 어디서 잘못했지?
어쨌든 결론이야.
불쾌하다
Reference
이 문제에 관하여(예처리에서 정밀도가 높아질까요?특별편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pyg50/items/7d3146668606ac2167c4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)