Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 회귀분석
- count
- 데이터분석
- loop 문
- %in%
- merge
- 그래프 생성 문법
- Sum
- 빅데이터분석
- 회귀분석 알고리즘
- 단순회귀 분석
- Intersect
- sqld
- 총과 카드만들기
- 데이터분석가
- 순위출력
- sql
- 팀스파르타
- max
- 히스토그램 그리기
- 그래프시각화
- 정보획득량
- 상관관계
- 빅데이터
- 막대그래프
- difftime
- Dense_Rank
- if문 작성법
- 불순도제거
- 여러 데이터 검색
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] Python_51. 판다스 머신러닝1 (나이브베이즈 분류모델) 본문
- 빅분기 시험에서 머신러닝은 랜덤포레스트와 다중회귀면 됨
- 인공지능 — 머신러닝 — 딥러닝
데이터 분석 | |
통계 데이터 분석 (가설검정) | 기계학습 데이터 분석 (분류,회귀) |
분류 | 회귀 |
knn, 나이브 베이즈, 의사결정트리, 서포트 벡터 머신, 신경망 | 단순회귀, 다중회귀 |
머신러닝 | 1. 분류: knn, 나이브베이즈, 의사결정트리, 서포트 백터머신, 신경망, 로지스틱 회귀 , 랜덤 포레스트 |
2. 회귀: 단순회귀, 다중회귀, 랜덤 포레스트 | |
숫자 --> knn 문자 --> naivebayes |
데이터 분석가 | 데이터 사이언티스트 | 데이터 엔지니어 | 딥러닝 개발자 |
데이터 검색 및 시각화 , 현상분석 , 통계분석 ( porduct / 금융 / 마케팅 (노코딩, 코딩)) |
데이터 분석가의 업무 + 머신러닝 | 데이터 전처리, 데이터 파이프 라인 구축 | 딥러닝 모델 개발 + 모델을 잘 활용할 수 있는 인터 페이스 개발 |
🌞[knn 모델 생성하기] 유방암 환자 분류 모델 생성 (2유형)
- 데이터 : wisc_bc_data.csv
- 번호 안 붙은 과정은 시험에서 따로 해줄 필요는 없으나, 따로 파이썬으로 머신러닝 할 때는 해줘야하는 과정
#1. 데이터 로드
import pandas as pd
wbcd = pd.read_csv("c:\\data\\wisc_bc_data.csv")
#2. 데이터 확인
wbcd.shape #(569,32)
#wbcd.info()
#3. 결측치 확인
wbcd.isnull().sum()
#4. 정규화 작업
from sklearn.preprocessing import MinMaxScaler
wbcd2 = wbcd.iloc[ :, 2: ] #환자 번호(id) 와 정답 컬럼(diagnosis)는 제외
wbcd2.head()
scaler = MinMaxScaler()
scaler.fit(wbcd2) # 최대 최소 정규화 계산을 수행
wbcd2_scaled = scaler.transform(wbcd2)
wbcd2_scaled # 넘파이 배열 구조에 0~1 사이의 숫자로 담겨있음
#정답 데이터도 numpy 배열로 구성하기
y = wbcd['diagnosis'].to_numpy()
y
#훈랸과 테스트를 9:1 로 분리하기
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(wbcd2_scaled, y, test_size = 0.1, random_state = 1)
#print(x_train.shape) # 훈련 데이터 (512, 30)
#print(x_test.shape) # 테스트 데이터 (57, 30)
#print(y_train.shape) # 훈련 데이터 정답 (512,)
#print(y_test.shape) # 테스트 데이터 정답 (57,)
#5. 모델 훈련
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors = 5) #k 값을 5개로 해서 모델을 생성
model.fit(x_train, y_train)
#6. 모델 예측
result = model.predict(x_test)
result
#7. 모델 평가
sum(result == y_test) / len(y_test) * 100
#8. 모델 성능 개선
from sklearn.metrics import accuracy_score
x = []
y = []
for i in range(1, 27, 2) : #1 ~27 까지 2씩 증가시켜라
model = KNeighborsClassifier(n_neighbors = i)
model.fit(x_train, y_train)
result = model.predict(x_test)
accuracy = accuracy_score(y_test , result)
print( 'k가 ', i , '개일 때 정확도는 ', accuracy, '입니다.')
x.append(i)
y.append(accuracy)
#시각화
import matplotlib.pyplot as plt
plt.plot(x, y, label='accuracy', color = 'red')
plt.legend()
plt.show()
🌞빅분기 유형2_문제1. 다음 와인 데이터 (wine.csv)의 클래스를 분류하는 머신러닝 모델을 생성하고 테스트 데이터에 대한 정확도를 출력하기
- knn 모델로 생성하고 훈련과 테스트를 9:1로 나누기
import pandas as pd
wine = pd.read_csv("c://data//wine2.csv")
wine.isnull().sum()
from sklearn.preprocessing import MinMaxScaler
wine2 = wine.iloc[ :, 2: ]
scaler = MinMaxScaler()
scaler.fit(wine2)
wine2_scaled = scaler.transform(wine2)
wine2_scaled
y = wine['Type'].to_numpy()
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(wine2_scaled, y, test_size = 0.1, random_state = 1)
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors = 5)
model.fit(x_train, y_train)
result = model.predict(x_test)
sum(result == y_test) / len(y_test) * 100
from sklearn.metrics import accuracy_score
x = []
y = []
for i in range(1, 27,2) :
model = KNeighborsClassifier(n_neighbors = i)
model.fit(x_train, y_train)
result = model.predict(x_test)
accuracy =accuracy_score(y_test, result)
print( 'k가 ', i , '개일 때 정확도는 ', accuracy*100, '입니다.')
🌞 파이썬으로 나이브 베이즈 분류 모델 만들기
※ 파이썬 나이브 베이즈 모델 3가지 | |
1. BernoulliNB | 이산형 데이터를 분류할 때 적합 (정수형 데이터) |
2. GaussianNB | 연속형 데이터를 분류할 때 적합 (실수형 데이터) |
3. MultinorminalNB | 이산형 데이터를 분류할 때 적합 |
"독버섯과 식용버섯 분류 모델 생성 "
[진행순서]
#1. 데이터 로드
#2. 결측치 확인
#3. 종속변수와 독립변수 분리
#4. 숫자로 변경
#5. 훈련 데이터와 테스트 데이터로 분리
#6. 모델 생성
#7. 모델 훈련
#8. 모델 예측
#9. 모델 평가
#10. 모델 개선
1. 데이터 로드
# 진행순서 #1. 데이터 로드 import pandas as pd mush = pd.read_csv("c:\\data\\mushrooms.csv") #mush.shape # (8124, 23) #mush.info()
2. 결측치 확인
#2. 결측치 확인 mush.isnull().sum()
3. 종속변수와 독립변수 분리
#3. 종속변수와 독립변수 분리 x = mush.iloc[ : , 1: ] # 독립변수 y = mush.iloc[ : , 0 ] # 종속변수 #y
4. 숫자로 변경
#4. 숫자로 변경(파이썬은 꼭 숫자로 변경해줘야합니다.R과의 차이점) #print(x.shape) # (8124, 22) x2 = pd.get_dummies(x) #print(x2.shape) # (8124, 117) # 변경전 ----------> 변경후 # cap_color cap_color_yellow cap_color_red # yellow 1 0 # red 0 1
5. 훈련 데이터와 테스트 데이터로 분리
#5. 훈련 데이터와 테스트 데이터로 분리(훈련80%, 테스트20%) from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_split(x2, y, test_size =0.2, random_stste=1) print(x_train.shape) print(x_test.shape) print(y_train.shape) print(y_test.shape)
6. 모델 생성#6. 모델 생성 # ※ 파이썬 나이브 베이즈 모델 3가지 #1. BernoulliNB : 이산형 데이터를 분류할 때 적합 ( 정수형 데이터 ) #2. GaussianNB : 연속형 데이터를 분류할 때 적합 ( 실수형 데이터 ) #3. MultinorminalNB : 이산형 데이터를 분류할 때 적합 from sklearn.naive_bayes import BernoulliNB model = BernoulliNB()
7. 모델 훈련
#7. 모델 훈련 model.fit( x_train, y_train)
8. 모델 예측
#8. 모델 예측 result = model.predict(x_test) result
9. 모델 평가
#9. 모델 평가 sum( result == y_test ) / len(y_test) * 100 # 93.9 # 유방암, 독버섯의 경우는 이원 교차표의 거짓부정(FN) 값을 확인해야 합니다. from sklearn.metrics import confusion_matrix tn, fp, fn, tp = confusion_matrix( y_test, result).ravel() #print( tn, fp, fn, tp ) # 815 5 94 711 , fn 이 94개 나 됩니다.
10. 모델 개선
#10. 모델 개선 from sklearn.naive_bayes import GaussianNB model3 = GaussianNB(var_smoothing=0.001) # 라플라스값을 0.001 로 지정
11. 모델 훈련# 11. 모델 훈련 model3.fit( x_train, y_train )
12. 모델예측#12. 모델 예측 result3 = model3.predict(x_test)
13. 모델평가#13. 모델 평가 sum( result3 == y_test ) / len(y_test) * 100 # 99.5
14. 모델 개선#14. 모델 개선 from sklearn.naive_bayes import GaussianNB model3 = GaussianNB(var_smoothing=0.001) # 라플라스값을 0.001 로 지정
15. 개선 확인#15 개선확인 from sklearn.metrics import confusion_matrix tn, fp, fn, tp = confusion_matrix( y_test, result3).ravel()
-> 815 5 94 711 -> 814 6 2 803 으로 fn 값이 많이 줄어들음
16. for loop 문을 돌려서 정확도와 fn 값 확인# 16. for loop 문을 돌려서 정확도와 fn 값 확인 import numpy as np for i in np.arange(0.001,0.01,0.001): # 0.001~0.01 까지 0.001씩 증가시켜라 from sklearn.naive_bayes import GaussianNB model3 = GaussianNB(var_smoothing = i) model3.fit(x_train, y_train) result3 = model3.predict(x_test) a = sum(result3 ==y_test)/len(y_test) *100 from sklearn.metrics import confusion_matrix tn,fp,fn,tp = confusion_matrix(y_test,result3).ravel() print(i,'일때 정확도는:', round(a,2), 'fn값:',fn)
🌞 iris2.csv를 이용해서 iris 꽃의 품종을 분류하는 나이브 베이즈 모델을 생성하시오
#1. 데이터 로드 import pandas as pd iris = pd.read_csv("c:\\data\\iris2.csv") iris.shape iris.info()
#2. 결측치 확인 iris.isnull().sum()
#3. 종속변수와 독립변수 분리 x = iris.iloc[ : , :4 ] # 독립변수 y = iris.iloc[ : , 4 ] # 종속변수 y
#4. 데이터 정규화 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() scaler.fit(x) x_scaled = scaler.transform(x) x_scaled
#5. 훈련 데이터와 테스트 데이터로 분리(훈련90%,테스트10%) from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test = train_test_split( x, y, test_size=0.1, random_state=1) print( x_train.shape ) # (135, 4) print( x_test.shape ) # (15, 4) print( y_train.shape ) # (135,) print( y_test.shape ) # (15,)
#6. 모델 생성 # ※ 파이썬 나이브 베이즈 모델 3가지 #1. BernoulliNB : 이산형 데이터를 분류할 때 적합 ( 정수형 데이터 ) #2. GaussianNB : 연속형 데이터를 분류할 때 적합 ( 실수형 데이터 ) #3. MultinorminalNB : 이산형 데이터를 분류할 때 적합 from sklearn.naive_bayes import BernoulliNB model = BernoulliNB()
#7. 모델 훈련 model.fit( x_train, y_train)
#8. 모델 예측 result = model.predict(x_test) result
#9. 모델 평가 sum( result == y_test ) / len(y_test) * 100 # 26.666666666666668
#10. 모델 개선 from sklearn.naive_bayes import GaussianNB model3 = GaussianNB(var_smoothing=0.001) # 라플라스값을 0.001 로 지정 #11. 모델 훈련 model3.fit( x_train, y_train ) #12. 모델 예측 result3 = model3.predict(x_test) #13. 모델 평가 sum( result3 == y_test ) / len(y_test) * 100
[빅분기 필기_수제비] 나이브 베이즈 모델로 예측할 수 있는것은 ?
1. 분류
2. 수치예측
3. 추천시스템 구현
4. 시계열 예측
답: 1번
[빅분기_필기_수제비] 아래의 나이브 베이즈 관련 용어는 ?
1. 학습할 데이터로 이미 알고 있는 확률 ? 사전확률
2. 사전 확률과 우도확률을 통해서 알게되는 조건부 확률 ? 사후확률
'빅데이터 분석(with 아이티윌) > python' 카테고리의 다른 글
[빅데이터분석] Python_53. 판다스 머신러닝3 (로지스트 회귀, SVC,다중회귀분석 모델 ) (0) | 2024.09.05 |
---|---|
[빅데이터분석] Python_52. 판다스 머신러닝2 (의사결정트리, 랜덤 포레스트) (1) | 2024.09.05 |
[빅데이터분석] Python_50. 판다스 기본문법3 (1 유형) - 서브쿼리 (0) | 2024.09.03 |
[빅데이터분석] Python_49. 판다스 기본문법2 (1 유형) (0) | 2024.09.03 |
[빅데이터분석] Python_48. 판다스 기본 문법 1 (2 유형) (0) | 2024.09.03 |