일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정보획득량
- loop 문
- 데이터분석
- 상관관계
- 막대그래프
- 데이터분석가
- 단순회귀 분석
- sql
- 회귀분석
- 팀스파르타
- 순위출력
- %in%
- 빅데이터
- Dense_Rank
- 여러 데이터 검색
- Sum
- 그래프 생성 문법
- sqld
- merge
- 총과 카드만들기
- 히스토그램 그리기
- 불순도제거
- max
- if문 작성법
- Intersect
- 회귀분석 알고리즘
- count
- difftime
- 빅데이터분석
- 그래프시각화
- Today
- Total
ch0nny_log
[빅데이터분석] Python_54. 판다스 머신러닝4. (단순회귀, 신경망 수치예측) 본문
✨ 파이썬으로 단순회귀 분석하기
주제: 탄닌 함유량과 애벌레의 성장률에 대한 산포도 그래프와 휘귀 직선 그래프를 파이썬으로 구현하기
1. 필요한 패키지 임포트
#1. 필요한 패키지 임포트
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
2. 데이터 로드
# 2. 데이터 로드
reg = pd.read_csv('c:\\data\\regression.txt',sep='\t')
reg
3.독립변수와 종속변수 지정
# 3. 독립변수와 종속변수 지정
x= reg[['tannin']]
y= reg[['growth']]
4. 산포도 그래프 시각화
#4. 산포도 그래프 시각화
sns.set_style('darkgrid')
plt.scatter(x,y,color='red')
5. 단순 회귀 방정식 시각화
#5. 단순 회귀 방정식 시각화
sns.regplot(x='tannin', y='growth', data=reg,scatter=False, fit_reg = True, color='green')
plt.show()
6. 모델생성
# 6. 모델생성
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model
7. 모델 훈련
# 7. 모델 훈련
model.fit(x,y)
8. 기울기와 절편 구하기
# 8. 기울기와 절편 구하기
print(model.coef_) # 기울기:[[-1.21666667]]
print(model.intercept_) # 절편: [11.75555556]
9. 탄닌 함유량이 9일때 애벌레의 성창율 모델 예측하기
# 9. 탄닌 함유량이 9일때 애벌레의 성창율 모델 예측하기
import numpy as np
result = model.predict(np.array(9).reshape(1,1)) # 숫자를 9를 np배열로 변환 한 수 1행 1열의 구조변경
print(result)
문제1. 광고비와 매출액과의 단순 회귀 모델을 생성하고 광고비가 26일때 매출액이 얼마인지 예측하시오.
데이터:simple_hg.csv
#1. 필요한 패키지 임포트
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 2. 데이터 로드
reg = pd.read_csv('c:\\data\\simple_hg.csv')
reg
# 3. 독립변수와 종속변수 지정
x= reg[['cost']]
y= reg[['input']]
#4. 산포도 그래프 시각화
sns.set_style('darkgrid')
plt.scatter(x,y,color='red')
#5. 단순 회귀 방정식 시각화
sns.regplot(x='cost', y='input', data=reg,scatter=False, fit_reg = True, color='green')
plt.show()
# 6. 모델생성
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model
# 7. 모델 훈련
model.fit(x,y)
# 8. 기울기와 절편 구하기
print(model.coef_) # 기울기:[[2.18648985]]
print(model.intercept_) # 절편: [62.92913386]
# 9. 모델 예측하기
import numpy as np
result = model.predict(np.array(26).reshape(1,1)) # 숫자를 9를 np배열로 변환 한 수 1행 1열의 구조변경
print(result) #[[119.77786987]]
※ 회귀 종류 총정리 | |
1. 단순 선형 회귀 | 독립변수 1개, 종속변수와의 직선 관계 |
2. 다중 선형 회귀 | 독립변수 N개, 종속변수와의 선형 관계(1차함수) |
3. 다항 회귀 | 독립변수와 종속변수와의 관계가 1차함수 이상인 관계 |
4. 곡선 회귀 | 독립변수가 1개이며 종속변수와의 곡선 관계 |
5. 비선형 회귀 | 호귀식의 모양이 선형관계로 있지 않은 모형 |
기출문제1. 수제비 5-47. 60번. 다음중 회귀분석에 대한 설명으로 가장 알맞은 것은?
1. 1개의 종속변수와 2차원인 1개의 종속변수를 가질 경우 단순 선형 회귀 모형이다.
2. 독립변수와 종속변수와의 관계가 1차함수 이상인 관계는 다항 회귀 모형이다.
3. 종속변수가 2개이고 독립변수가 1개일 경우 곡선 회귀모형이다.
4. 종속변수가 1개이고 1차원인 1개의 독립변수를 가질경우 비선형 회귀모형이다.
기출문제2. 수제비 5-46, 51번. 다음중 로지스틱 회귀분석에 대한 설명으로 가장 알맞은 것은 ?
1. 반응변수를 1과 0으로 이진 분류하는 경우에 사용한다.
2. 반응변수가 수치형일 경우에 사용하는 분석 방법이다.
3. 반응변수를 로짓으로 변환할 때 오즈(Odds) 는 사용되지 않는다.
4. 로짓변환 후에 반응 변수는 0과 1 사이의 값을 가진다
▣ 다중 회귀 분석시 꼭 챙겨하는 데이터 확인 방법 ! 다중 공선성 (필기 6회시험)
다중공선성이란 ? 독립변수들끼리 강한 상관관계를 보이고 있어서 종속변수에
대한 특정 독립변수의 영향도가 상대적으로 감소하는 현상
독립변수: 1. 혈중 알코올 농도 **
2. 주당 음주량
3. 시험공부시간 ***
종속변수: 시험 성적
★ 회귀분석을 하기전에는 다중 공선성 문제가 있는지 확인을 미리 해야합니다.
■ 파이썬으로 다중 공선성 실습하기 !
#1. 필요한 패키지를 불러옵니다.
import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant
# 2.데이터 불러오기 (이미 불러온 test_data 사용)
test_data = pd.read_csv("c:\\data\\test_vif2.csv", encoding='euc-kr')
#test_data
# 3. 종속변수 "시험점수" 제외한 독립변수만 추출
X = test_data[['아이큐', '공부시간', '등급평균']]
# 4. 상수항 추가
X = add_constant(X)
# 5. VIF 계산
vif_data = pd.DataFrame() # 비어있는 데이터 프레임 생성
# print(X.columns) # ['const', '아이큐', '공부시간', '등급평균']
vif_data["변수"] = X.columns
#print(X.shape[1])
#print(X.values)
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
# 결과 출력
print(vif_data)
# 현업 기준으로 팽창계수(vif) 10보다 큰것을 골라내는 것이 일반적이고
# 좀더 엄격하게 하려면 5보다 큰것을 골라내고
# 느슨하게 하려면15~20 으로 골라내면 됩니다.
결과해석: 아이큐와 등급 평균의 vif(팽창계수) 가 10보다 큽니다. 아이큐가 시험점수에 영향이 있다 라는 가설검정을 하고 싶다면 등급평균을 빼고 다중회귀 분석을 해야합니다.
->등급평균이 시험점수에 영향이 있다라는 가설검정을 하고 싶다면 아이큐를 빼고 가설검정을 해야합니다.
[빅분기 필기 관련 시험문제] 기출문제 6회 시험. 수제비 5-57. 42번문제
문제. 다중 회귀모형 다중 공선성을 검사하는 방법으로 가장 알맞은 것은 ?
1. 결정계수
2. vif
3. Mallow's C
4. 쿡의 거리
▣ 최대 최소 정규화와 표준화에 대한 빅분기 필기 시험 문제
최대최소 정규화: help("sklearn.preprocessing.MinMaxScaler")
표준화 : help("sklearn.preprocessing.StandardScaler")
기출문제6회. 수제비 책 5-56. 38번 최소-최대 정규화를 했을때 총합은 얼마인가 ?
60, 70, 80
1. 1.0
2. 1.5
3. 2.0
4. 3.0
예상문제. 표준화 했을때 총합은 얼마인가 ?
60, 70, 80
설명: z 표준화를 수행하면 z 점수들의 총합은 항상 0 입니다.
▣ 이원 교차표 해석 기출 문제 총정리 및 파이썬으로 구현
✨ 파이썬으로 신경망 구현하기 (수치예측)
주제: 콘크리트 강도 예측하는 신경망 만들기
1. 데이터 로드
#1. 데이터 로드
import pandas as pd
df =pd.read_csv('c:\\data\\concrete.csv')
df.head()
df.shape #(1030, 9) <- (행 열)
2. 결측치 확인
#2. 결측치 확인
df.isnull().sum()
3. 정규화 수행
#3. 정규화 수행
# 독립변수와 종속변수 분리
x = df.iloc[ : , 0 : -1 ]
y = df.iloc[ : , -1 ]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(x)
x2 = scaler.transform(x)
4. 훈련과 테스트 분리
#4. 훈련과 테스트 분리
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x2, y, test_size=0.2, random_state=1)
print( x_train.shape ) # (824, 8)
print( x_test.shape ) # (206, 8)
print( y_train.shape) # (824,)
print( y_test.shape ) # (206,)
5. 모델 생성
#5. 모델 생성
#from sklearn.neural_network import MLPClassifier # 분류
from sklearn.neural_network import MLPRegressor # 수치예측
model = MLPRegressor(random_state =1 )
6. 모델 훈련
#6. 모델 훈련
model.fit(x_train, y_train)
7. 모델 예측
#7. 모델 예측
result = model.predict(x_test)
result
8. 모델 평가
#8. 모델 평가(정답과 예측값과의 상관계수)
import numpy as np
np.corrcoef(result,y_test)
-> 0.84 는 넘어 줘야됨
9. 모델 개선
#9. 모델 개선
from sklearn.neural_network import MLPRegressor # 수치예측
model2 = MLPRegressor(random_state =1 , hidden_layer_sizes =(200,50)) # 은닉층 1층 뉴런수 200개, 은닝 2층 50개
# 모델 재 훈련
model2.fit(x_train, y_train)
# 모델 재 예측
result2 = model2.predict(x_test)
result2
# 모델 재평가(정답과 예측값과의 상관계수)
import numpy as np
np.corrcoef(result2,y_test)
※ 신경망 관련 하이퍼 파라미터
1. 뉴런수
2. 층수
3. 뉴런에 들어가는 함성화 함수
4. 학습률
5. 경사하강법
★ 가중치 <- 파라미터 (하이퍼 파라미터 x)
'빅데이터 분석(with 아이티윌) > python' 카테고리의 다른 글
[빅데이터분석] Python_56. 판다스 머신러닝 6.(z검정 통계, 정규검정, 단측검정, 가설검정, anova분석, 비모수 검정,카이제곱 검정 ) (0) | 2024.09.10 |
---|---|
[빅데이터분석] Python_55. 판다스 머신러닝5.(랜덤 포레스트 , 수치예측) (3) | 2024.09.10 |
[빅데이터분석] Python_53. 판다스 머신러닝3 (로지스트 회귀, SVC,다중회귀분석 모델 ) (0) | 2024.09.05 |
[빅데이터분석] Python_52. 판다스 머신러닝2 (의사결정트리, 랜덤 포레스트) (1) | 2024.09.05 |
[빅데이터분석] Python_51. 판다스 머신러닝1 (나이브베이즈 분류모델) (4) | 2024.09.05 |