반응형
츄르사려고 코딩하는 코집사입니다.
In [1]:
#라이브러리 불러오기
import pandas as pd
import os
import numpy as np
#랜덤포레스트 라이브러리
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.tree import export_graphviz
import warnings
import pydotplus
from IPython.display import Image
from sklearn import tree
import statsmodels.api as sm
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')
In [2]:
from matplotlib import font_manager, rc
#plot 한글 깨짐
plt.rc('font', family='Malgun Gothic')
#막대그래프 한글 깨짐
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
In [5]:
최종데이터 = pd.read_csv('C:/Users/User/Desktop/바탕화면/AI data/AI_철새도래지_최종데이터.csv', encoding='euc-kr')
In [6]:
최종데이터
Out[6]:
In [9]:
variables = 최종데이터.columns[5:12].tolist() ## 설명 변수 리스트
y = 최종데이터['발생여부'] ## 반응 변수
selected_variables = variables ## 초기에는 모든 변수가 선택된 상태
sl_remove = 0.05
sv_per_step = [] ## 각 스텝별로 선택된 변수들
adjusted_r_squared = [] ## 각 스텝별 수정된 결정계수
steps = [] ## 스텝
step = 0
while len(variables) > 0:
X = sm.add_constant(최종데이터[selected_variables])
p_vals = sm.OLS(y,X).fit().pvalues[1:]
max_pval = p_vals.max() ## 최대 p-value
if max_pval >= sl_remove: ## 최대 p-value값이 기준값보다 크거나 같으면 제외
remove_variable = p_vals.idxmax()
selected_variables.remove(remove_variable)
step += 1
steps.append(step)
adj_r_squared = sm.OLS(y,sm.add_constant(최종데이터[selected_variables])).fit().rsquared_adj
adjusted_r_squared.append(adj_r_squared)
sv_per_step.append(selected_variables.copy())
else:
break
In [10]:
selected_variables
Out[10]:
In [11]:
최종데이터_Target = 최종데이터['발생여부']
In [12]:
최종데이터_Data = 최종데이터[['평균기온','평균풍속','평균상대습도','철새도래지거리']]
In [13]:
Decision_Tree = DecisionTreeClassifier(random_state=200)
In [14]:
X_train, X_test, y_train, y_test = train_test_split(최종데이터_Data, 최종데이터_Target, test_size=0.2, random_state=10, shuffle = True)
In [15]:
Decision_Tree.fit(X_train, y_train)
Out[15]:
In [16]:
np.where(np.isnan(y_train))
Out[16]:
In [21]:
print("Test Set Score : {:.2f}".format(Decision_Tree.score(X_test, y_test)))
In [18]:
Decision_Tree_Prediction = Decision_Tree.predict(X_test)
In [19]:
a = list(y_test)
In [20]:
fig = plt.figure( figsize = (12, 4))
chart = fig.add_subplot(1,1,1)
chart.plot(a[:200], marker='o', color='blue', label='실제값')
chart.plot(Decision_Tree_Prediction[:200], marker='^', color='red', label='예측값')
chart.set_title('Decision Tree 예측 결과', size=30)
plt.xlabel('횟수', size=20)
plt.ylabel('발생여부', size=20)
plt.legend(loc = 'best')
Out[20]:
In [ ]:
반응형
'빅데이터 분석 > AI 조류인플루엔자 예측' 카테고리의 다른 글
빅데이터 분석 AI 조류 인플루엔자 데이터 분석 모델링 - (5) AdaBoost (0) | 2020.12.17 |
---|---|
빅데이터 분석 AI 조류 인플루엔자 데이터 분석 모델링 - (4) KNN (0) | 2020.12.17 |
빅데이터 분석 AI 조류 인플루엔자 데이터 분석 모델링 - (3) SVM (0) | 2020.12.17 |
빅데이터 분석 AI 조류 인플루엔자 데이터 분석 모델링 - (2) Random Forest (0) | 2020.12.17 |
빅데이터 분석 AI 조류 인플루엔자 데이터 EDA - (3) (0) | 2020.12.16 |
빅데이터 분석 AI 조류 인플루엔자 데이터 샘플링 - (2) (2) | 2020.12.14 |
빅데이터 분석 AI 조류 인플루엔자 데이터 샘플링 - (1) (0) | 2020.12.09 |
빅데이터 분석 AI 조류 인플루엔자 데이터 EDA - (2) (0) | 2020.12.09 |
최근댓글