문제별 적용할 수 있는 모델

  1. 분류문제
    1. DecisionTreeClassifier
    2. RandomForestClassifier
    3. SVM
  2. 회귀문제
    1. DecisionTreeRegressor
    2. RandomForestRegressor
    3. LinearRegression
    4. Ridge
    5. PolynomialFeatures
    6. SVM

Numpy reshape()

NumPy array의 shape를 변경
전체 사이즈가 48이라면 12x4 형태의 matrix를 8x6 형태로 변경

In [1]:
import numpy as np
a=np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
print(a.shape)
a
(2, 6)
Out[1]:
array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
In [2]:
b=a.reshape([3,4])
print(b.shape)
b
(3, 4)
Out[2]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

.iloc[] : 판다스를 사용하여 행(rows) 추출
.values : 주어진 데이터프레임에서 속성을 Numpy 형태로 반환

따라서 np.reshape(numbers.iloc[6].values,[28,28])란
(1) 6번째 행에 해당하는 값을
(2) numpy 형태로 변환한 다음에
(3) 28x28의 행렬로 변경해줘!

Ridge

가중치의 절댓값을 가능한 작게 만드는 회귀 모델
선형회귀에 비해 overfitting이 적음
모델을 단순하게 해주고 훈련 세트에 대한 성능 사이를 절충

alpha값을 조정해 훈련 세트의 성능 대비 모델을 얼마나 단순화할 지 지정할 수 있다(default=1.0)

  1. alpha값을 높이면 훈련세트의 성능은 나빠지나 일반화 쉬워짐
  2. alpha값을 낮추면 linear regression에 가까워짐

In [3]:
import pandas as pd
df=pd.read_csv('data/house.csv')
house_data=df.drop(['id','date'],axis=1)
from sklearn.model_selection import train_test_split
train_data=house_data.drop(['price'],axis=1)
target_data=house_data['price']
x_train,x_test,y_train,y_test=train_test_split(train_data,target_data,test_size=0.2)
x_train,x_valid,y_train,y_valid=train_test_split(x_train,y_train,test_size=0.2)
####
alpha=[1.0,10,100,0.1]
from sklearn.linear_model import Ridge
for i in alpha:
    ridge=Ridge(alpha=i).fit(x_train,y_train)              
    print("alpha:",i)
    print("train set score:",ridge.score(x_train,y_train))
    print("valid set score:",ridge.score(x_valid,y_valid))
alpha: 1.0
train set score: 0.7003880564132543
valid set score: 0.6821103153589353
alpha: 10
train set score: 0.7001601415079268
valid set score: 0.6814282506821613
alpha: 100
train set score: 0.6919227177637094
valid set score: 0.6705103598440305
alpha: 0.1
train set score: 0.7003906968466467
valid set score: 0.6821624161186219
In [ ]:
 
In [ ]: