# 인코딩 문제를 해결하는 두가지 방법
## 1 csv파일 인코딩을 ANSI로 저장
df1=read.csv('https://github.com/lhmlhm1111/Data_GongHak/raw/master/%EC%A0%84%EC%B2%98%EB%A6%AC/%EC%86%8C%EB%93%9D%EB%B0%98%EC%98%81%EC%B5%9C%EC%A2%85.csv',header=T, sep=',')
## 2 readAny 패키지 활용
library (devtools)
## Loading required package: usethis
# 패키지를 로드합니다.
install_github("plgrmr/readAny", force = TRUE)
## Downloading GitHub repo plgrmr/readAny@master
## cli (1.1.0 -> 2.0.0) [CRAN]
## Installing 1 packages: cli
## Installing package into 'C:/Users/bookair/Documents/R/win-library/3.6'
## (as 'lib' is unspecified)
##
## There is a binary version available but the source version is later:
## binary source needs_compilation
## cli 1.1.0 2.0.0 FALSE
## installing the source package 'cli'
##
checking for file 'C:\Users\bookair\AppData\Local\Temp\RtmpqgpHJR\remotes260869541af2\plgrmr-readAny-8aaddb7/DESCRIPTION' ...
checking for file 'C:\Users\bookair\AppData\Local\Temp\RtmpqgpHJR\remotes260869541af2\plgrmr-readAny-8aaddb7/DESCRIPTION' ...
√ checking for file 'C:\Users\bookair\AppData\Local\Temp\RtmpqgpHJR\remotes260869541af2\plgrmr-readAny-8aaddb7/DESCRIPTION' (556ms)
##
- preparing 'readAny':
## checking DESCRIPTION meta-information ...
checking DESCRIPTION meta-information ...
√ checking DESCRIPTION meta-information
##
- checking for LF line-endings in source and make files and shell scripts
##
- checking for empty or unneeded directories
##
- building 'readAny_0.1.0.tar.gz'
##
##
## Installing package into 'C:/Users/bookair/Documents/R/win-library/3.6'
## (as 'lib' is unspecified)
library(readAny)
## Loading required package: readr
df2= read.any('https://github.com/lhmlhm1111/Data_GongHak/raw/master/%EC%A0%84%EC%B2%98%EB%A6%AC/%EC%86%8C%EB%93%9D%EB%B0%98%EC%98%81%EC%B5%9C%EC%A2%85.csv', header=T, sep=',')
attach (df1)
names (df1)
## [1] "year" "읍면동명" "자치구"
## [4] "선거인수" "새누리당" "더불어민주당"
## [7] "국민의당" "독거노인수" "유년부양비"
## [10] "노년부양비" "노령화지수" "사업체수"
## [13] "종사자수" "사업체.창업률" "기초수급자인원수"
## [16] "보육시설" "금융기관" "사업체.평균연령"
## [19] "장애등급별.장애인현황" "인구" "면적"
## [22] "인구밀도" "소득"
model3 <- aov(새누리당~독거노인수+유년부양비+노년부양비+노령화지수+사업체수+종사자수+사업체.창업률+기초수급자인원수+보육시설+금융기관+사업체.평균연령+인구+면적+인구밀도+ 소득)
summary(model3)
## Df Sum Sq Mean Sq F value Pr(>F)
## 독거노인수 1 2.302e+08 230185894 120.861 < 2e-16 ***
## 유년부양비 1 8.248e+08 824836682 433.086 < 2e-16 ***
## 노년부양비 1 2.637e+08 263678415 138.446 < 2e-16 ***
## 노령화지수 1 2.340e+06 2339973 1.229 0.267997
## 사업체수 1 9.321e+07 93210115 48.941 5.43e-12 ***
## 종사자수 1 4.871e+06 4871389 2.558 0.110135
## 사업체.창업률 1 2.533e+05 253293 0.133 0.715442
## 기초수급자인원수 1 4.721e+07 47207560 24.787 7.79e-07 ***
## 보육시설 1 4.582e+07 45819850 24.058 1.12e-06 ***
## 금융기관 1 1.117e+08 111723182 58.661 5.21e-14 ***
## 사업체.평균연령 1 6.360e+05 635956 0.334 0.563521
## 인구 1 7.214e+08 721383036 378.767 < 2e-16 ***
## 면적 1 1.341e+07 13405649 7.039 0.008129 **
## 인구밀도 1 3.369e+07 33687732 17.688 2.89e-05 ***
## 소득 1 2.893e+07 28932542 15.191 0.000105 ***
## Residuals 831 1.583e+09 1904558
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model4 <-lm(새누리당~독거노인수+유년부양비+노년부양비+노령화지수+사업체수+종사자수+사업체.창업률+기초수급자인원수+보육시설+금융기관+사업체.평균연령+인구+면적+인구밀도+ 소득)
summary(model4)
##
## Call:
## lm(formula = 새누리당 ~ 독거노인수 + 유년부양비 + 노년부양비 +
## 노령화지수 + 사업체수 + 종사자수 + 사업체.창업률 + 기초수급자인원수 +
## 보육시설 + 금융기관 + 사업체.평균연령 + 인구 + 면적 + 인구밀도 +
## 소득)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9008.0 -433.0 148.9 695.5 4213.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.693e+02 7.176e+02 1.211 0.226064
## 독거노인수 -6.170e-01 2.473e-01 -2.495 0.012788 *
## 유년부양비 3.503e+01 2.173e+01 1.612 0.107257
## 노년부양비 3.770e+01 2.651e+01 1.422 0.155352
## 노령화지수 -5.812e+00 2.674e+00 -2.173 0.030061 *
## 사업체수 -2.511e-02 5.320e-02 -0.472 0.637008
## 종사자수 -1.857e-02 7.987e-03 -2.325 0.020300 *
## 사업체.창업률 -5.099e+01 2.065e+01 -2.470 0.013716 *
## 기초수급자인원수 2.630e-01 1.178e-01 2.232 0.025873 *
## 보육시설 -9.484e-01 2.432e-01 -3.899 0.000104 ***
## 금융기관 6.458e+01 1.302e+01 4.959 8.59e-07 ***
## 사업체.평균연령 -2.697e+00 3.812e+01 -0.071 0.943621
## 인구 1.959e-01 1.039e-02 18.865 < 2e-16 ***
## 면적 -2.927e+01 4.214e+01 -0.695 0.487557
## 인구밀도 -2.294e-02 5.198e-03 -4.412 1.16e-05 ***
## 소득 2.353e-04 6.038e-05 3.898 0.000105 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1380 on 831 degrees of freedom
## Multiple R-squared: 0.6048, Adjusted R-squared: 0.5977
## F-statistic: 84.79 on 15 and 831 DF, p-value: < 2.2e-16
library(reticulate)
use_python("/usr/bin/python3") # Change accordingly to your Python version
matplotlib <- import("matplotlib")
matplotlib$use("Agg", force = TRUE)
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
#원본 데이터 호출 (깃허브에 저장된 데이터 파일 호출)
df4 = pd.read_csv('https://github.com/lhmlhm1111/Data_GongHak/raw/master/11-22totaldata.txt', encoding='utf-8', sep=',')
#학습 데이터 생성
train1 = df4.drop(df4.index[:250],axis=0)
train1.x = train1.drop(['year','읍면동명','자치구','새누리당','더불어민주당','국민의당'],axis=1)
## C:\Users\bookair\ANACON~1\python.exe:1: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
train1.y = train1['새누리당']
#테스트 데이터 생성
test1 = df4.drop(df4.index[250:],axis=0)
test1.x = test1.drop(['year','읍면동명','자치구','새누리당','더불어민주당','국민의당'],axis=1)
test1.y = test1['새누리당']
## 랜덤포레스트 회귀 모델 생성&적용
rf1 = RandomForestRegressor()
rf1.fit(train1.x,train1.y)
## RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
## max_features='auto', max_leaf_nodes=None,
## min_impurity_decrease=0.0, min_impurity_split=None,
## min_samples_leaf=1, min_samples_split=2,
## min_weight_fraction_leaf=0.0, n_estimators=10,
## n_jobs=None, oob_score=False, random_state=None,
## verbose=0, warm_start=False)
##
## C:\Users\bookair\ANACON~1\lib\site-packages\sklearn\ensemble\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
## "10 in version 0.20 to 100 in 0.22.", FutureWarning)
predicted = rf1.predict(test1.x)
rf1.feature_importances_
## array([0.11489897, 0.01354322, 0.07242079, 0.01851679, 0.04484111,
## 0.00752623, 0.00944355, 0.01907715, 0.02688265, 0.03231178,
## 0.03102147, 0.01850907, 0.02121904, 0.46441726, 0.03513181,
## 0.02269932, 0.04753978])
import PyQt5
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure
#가공할 데이터 호출
data = pd.read_csv('https://github.com/lhmlhm1111/Data_GongHak/raw/master/11-22totaldata.txt',encoding='UTF-8',sep=',')
#데이터 가공 : 변수 선별 (제외할 변수)
df3 = data.drop(['year','읍면동명','자치구','선거인수','인구'],axis=1)
#상관계수 분포 지도 (Heat Map) 작성
plt.rc('font', family='batang')
fig = plt.figure(figsize=[20,20])
ax=sns.heatmap(df3.corr(),annot=True,square=True)
plt.title('변수 간 상관관계')
plt.show()
# 모델 적용