# [Step 1] 데이터 준비/ 기본 설정
# -*- coding: utf-8 -*-
### 기본 라이브러리 불러오기
import pandas as pd
'''
[Step 1] 데이터 준비/ 기본 설정
'''
# load_dataset 함수를 사용하여 데이터프레임으로 변환
df = pd.read_csv('c:\\data\\boston.csv')
# IPython 디스플레이 설정 - 출력할 열의 개수 한도 늘리기
pd.set_option('display.max_columns', 15)
df.head()
# 결측치 확인
df.isnull().sum()
# [Step 2] 데이터 탐색/ 전처리
df.head()
df.info()
# [Step 4] 데이터셋 구분 - 훈련용(train data)/ 검증용(test data)
'''
[Step 4] 데이터셋 구분 - 훈련용(train data)/ 검증용(test data)
'''
# 속성(변수) 선택
X=df[['CRIM', 'ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT']] #독립 변수 X
y=df['price'] #종속 변수 Y
X.head()
# 설명 변수 데이터를 정규화(normalization)
from sklearn import preprocessing
X = preprocessing.StandardScaler().fit(X).transform(X)
print(X)
# train data 와 test data로 구분(7:3 비율)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10)
print('train data 개수: ', X_train.shape)
print('test data 개수: ', X_test.shape)
print('\n')
# [Step 5] 신경망 모형 - sklearn 사용
from sklearn.neural_network import MLPRegressor
# 3.neural network 모델 적합
clf = MLPRegressor(random_state=0, max_iter=500)
# [Step 9] 모형 성능 개선
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import GridSearchCV
param_grid = [
{
'activation' : ['identity', 'logistic', 'tanh', 'relu'],
'solver' : ['lbfgs', 'sgd', 'adam'],
'hidden_layer_sizes': [
(1,),(2,),(3,),(4,),(5,),(6,),(7,),(8,),(9,),(10,),(11,), (12,),(13,),(14,),(15,),(16,),(17,),(18,),(19,),(20,),(21,)
],
'random_state':[0,1,2,3,4,5,6,7,8,9,10]
}
]
clf = GridSearchCV(MLPRegressor(), param_grid, cv=3, n_jobs = -1, verbose = 2 )
clf.fit(X_train, y_train)
print("Best parameters set found on development set:")
print(clf.best_params_) # {'activation': 'relu', 'hidden_layer_sizes': (10,), 'random_state': 4, 'solver': 'lbfgs'}
y_hat = clf.predict(X_test)
print(y_hat[0:10])
print(y_test.values[0:10])
print('\n')
import scipy.stats as stats
svm_report = stats.pearsonr(y_test, y_hat)
print(svm_report) # (0.9270169348621652, 2.1799878923162655e-44)