r이 -1.0과 -0.7 사이 : 강한 음적 선형관계
r이 -0.7과 -0.3 사이 : 뚜렷한 음적 선형관계
r이 -0.3과 -0.1 사이 : 약한 음적 선형관계
r이 -0.1과 +0.1 사이 : 거의 무시될 수 있는 선형관계
r이 +0.1과 0.3 사이 : 약한 양적 선형관계
r이 +0.3과 +0.7 사이 : 뚜렷한 양적 선형관계
r이 +0.7과 +1.0 사이 : 강한 양적 선형관계
부호
크기
import maplotlib.pyplot as plt
import numpy as np
x = [7,3,6,8,8,3,2,6,7,8]
y = [4,4,5,6,7,2,1,8,4,5]
plt.plot(x,y,'o')
np.cov(x,y)[0,1]
import pandas as pd
import numpy as np
from sklearn import datasets
data = datasets.load_diabetes() #사이킷런의 당뇨데이터 로드
print(data)
# 딕셔너리 데이터 키값 확인
data.keys()
# 데이터 프레임으로 변환 컬럼명은 feature_names의 value
df = pd.DataFrame(data['data'],columns=data['feature_names'])
df
# 당뇨수치 데이터 target 컬럼으로 insert
df['target'] = data['target']
df
#pandas corr함수로 상관관계 분석
df.corr()
import seaborn as sns
sns.heatmap(df.corr())
plt.show()

import matplotlib.pyplot as plt
x = df.bmi
y = df.target
plt.scatter(x,y,alpha = 0.5)
plt.xlabel('BMI')
plt.ylabel('TARGET')
plt.show()

x = df.s3.values
y = df.target.values
plt.scatter(x,y,alpha=0.5)
plt.xlabel('S3')
plt.ylabel('TARGET')
plt.show()

import scipy.stats as stats
x = df.s3.values
y = df.target.values
stats.pearsonr(x,y)
#p-value가 0에 가까움으로 귀무가설 '상관관계가 없다'를 기각
머신러닝에서 독립변수는 feature, 종속변수는 결정값에 해당
feature의 결정 값 데이터에서 학습을 통해 최적의 회귀 계수를 찾아내는 것
표준화 : 피처들을 평균이 0이고 분산이 1인 가우시안 정규 분포를 가진 값으로 변환
정규화 : 피처들의 크기를 통일하기 위해 크기를 변환하는 것, 값을 최소 0 ~ 최대 1의 값으로 변환
StandardScaler
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris() # iris 데이터를 불러옴
iris_data = iris.data
iris_df=pd.DataFrame(data=iris_data,columns=iris.feature_names)
iris_df.head()
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(iris_df) #학습
iris_scaled = scaler.transform(iris_df) #적용
iris_scaled
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(iris_df)
iris_scaled=scaler.transform(iris_df)
df_scaled=pd.DataFrame(data=iris_scaled,columns=iris.feature_names)
df_scaled
머신러닝 모델을 학습하고 그 결과를 검증하기 위해서는 원래의 데이터를 Training,Validation,Testing의 용도로 나누어서 사용해야함
Training에서 사용한 데이터를 검증용으로 사용하면 과접합의 문제가 생겨 성능에 문제가 생김
trian_test_split : 사이킷런에서 데이터를 학습과 검증데이터로 분리하는데 사용하는 함수
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
dataset = load_iris()
data = dataset['data']
target = dataset['target']
#train_test_split
X_train, X_test, y_train, y_test = \
train_test_split(data,target, test_size = 0.2,
shuffle = True, stratify = target, random_state=34)
test_size : 테스트 셋 구성의 비율
test_size = 0.2는 전체 데이터 셋의 20%를 test셋으로 지정한다는 의미
shuffle : default = True
split을 하기 전 섞을 건지 여부
stratify : default = None
stratify 값을 target으로 지정해주면 각각의 class 비율을 train/ validation에 유지. 이 옵션을 지정해주지 않으면 성능의 차이가 많이 날 수 있음
random_state : 이 값ㅇ르 고정해두고 튜닝해야 매번 데이터셋이 변경되는 것을 방지
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
data = load_breast_cancer()
data
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
#StandardScaler : 평균이 0, 분산 1로 데이터 분포도 변환
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data.data)
X_train, X_test, y_train, y_test = train_test_split(data_scaled, data.target, test_size=0.3,random_state=0)
from sklearn.metrics import accuracy_scaore, roc_auc_score
#로지스틱 회귀를 이용하여 학습 : 결과값이 1과 0으로
lr_clf = LogisticRegression()
lr_clf.fit(X_train,y_train)
lr_preds = lr_clf.predict(X_test)
#accuracy와 roc_auc 측정
print('acc : ',accuracy_score(y_test,lr_preds))
print('roc : ',roc_auc_score(y_test, lr_preds))
colab
https://colab.research.google.com/drive/111Q9rEdMxkLQdCGeRIPDKc7Yb7X5rkmJ?usp=sharing