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
- 데이터분석가
- 정보획득량
- sqld
- 상관관계
- loop 문
- Dense_Rank
- if문 작성법
- difftime
- 히스토그램 그리기
- 여러 데이터 검색
- Intersect
- %in%
- merge
- 회귀분석 알고리즘
- max
- 빅데이터
- 팀스파르타
- 순위출력
- 빅데이터분석
- 불순도제거
- Sum
- 총과 카드만들기
- 회귀분석
- sql
- 그래프시각화
- 단순회귀 분석
- 그래프 생성 문법
- 데이터분석
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] Python_55. 판다스 머신러닝5.(랜덤 포레스트 , 수치예측) 본문
📝 파이썬으로 랜덤 포레스트 모델 생성해서 수치 예측하기 ( 빅분기 실기 2유형 )
- 처음에는 회귀트리 모델로 수치예측 → 랜덤 포레스트 모델로 수치 예측
#1. 데이터 로드
import pandas as pd
wine = pd.read_csv("c:\\data\\whitewines.csv")
#wine.head()
#2. 결측치 확인
wine.isnull().sum()
# 3. 훈련과 테스트 분리
from sklearn.model_selection import train_test_split
x = wine.iloc[: , 0:-1] #맨 끝의 컬럼인 quality를 제외
y = wine.iloc[: , -1] # 맨 끝의 정답 데이터
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.1, random_state=1)
#print(x_train.shape) (4408, 11)
#print(x_test.shape) (490, 11)
#print(y_train.shape) (4408,)
#print(y_test.shape) (490,)
# 4. 모델 생성(수치를 예측하는 의사결정 나무 생성 --> 회귀트리)
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor(random_state = 1)
model
# 5. 모델 훈련
model.fit(x_train, y_train)
# 6. 모델 예측
result = model.predict(x_test)
result
# 7. 모델 평가 (상관계수, 오차 확인)
# 정답과 예측과의 상관계수
import numpy as np
np.corrcoef(y_test,result) # 0.58180875
#정답과 예측과의 오차확인
def mae(x,y):
return np.mean(abs(x-y))
print(mae(y_test, result)) # 0.47551020408163264
# 8. 모델 개선
# 기존모델 : 의사결정 트리 회귀모델 (from sklearn.tree import DecisionTreeRegressor)
# 개선모델 : 앙상블을 이용한 의사결정트리 회귀모델 (from sklearn.ensemble import RandomForestRegressor)
from sklearn.ensemble import RandomForestRegressor
model2 = RandomForestRegressor(random_state = 1)
model2
model2.fit(x_train, y_train)
result2 = model2.predict(x_test)
result2
# 정답과 예측과의 상관계수
import numpy as np
np.corrcoef(y_test,result2)
print( np.corrcoef( y_test, result2 ) ) # 0.71178998
#정답과 예측과의 오차확인
def mae(x,y):
return np.mean(abs(x-y))
print(mae(y_test, result2)) # 0.43489795918367347
문제1. 랜덤 포레스트 회귀 모델의 나무 갯수를 늘려서 성능을 올리기
- 힌트 : model2 = RandomForestRegressor(random_state =1, n_estimators=100)
# 8. 모델 개선 # 기존모델 : 의사결정 트리 회귀모델 (from sklearn.tree import DecisionTreeRegressor) # 개선모델 : 앙상블을 이용한 의사결정트리 회귀모델 (from sklearn.ensemble import RandomForestRegressor) from sklearn.ensemble import RandomForestRegressor model2 = RandomForestRegressor(random_state =1, n_estimators=100) model2 model2.fit(x_train, y_train) result2 = model2.predict(x_test) result2 # 정답과 예측과의 상관계수 import numpy as np np.corrcoef(y_test,result2) print( np.corrcoef( y_test, result2 ) ) # 0.71178998 #정답과 예측과의 오차확인 def mae(x,y): return np.mean(abs(x-y)) print(mae(y_test, result2)) # 0.43489795918367347
n_estimatiors 를 더 늘려도 성능이 개선되지 않는다면?
모델을 바꾸거나 파생변수를 추가 또는 정규화 여부를 고려해봐야함
문제2. 최대 최소 정규화를 진행해서 더 성능을 올리기
- 훈련 데이터와 테스트 데이터를 분리한 후에 최대 최소 정규화를 진행하는데,
- 훈련 데이터에 대해서 최대 최소 정규화를 진행하고
- 훈련 데이터에 대해서 최대 최소 정규화한 계산한 것을 가지고
- 테스트 데이터에 대해서 최대 최소 정규화를 진행
#1. 데이터 로드 import pandas as pd wine = pd.read_csv("c:\\data\\whitewines.csv") wine.head() #2. 결측치 확인 wine.isnull().sum() #3. 훈련과 테스트 분리 from sklearn.model_selection import train_test_split x = wine.iloc[ : , 0:-1] # 맨끝의 컬럼인 quality 를 제외 y = wine.iloc[ : , -1 ] # 맨끝의 정답 데이터 x_train, x_test, y_train, y_test = train_test_split( x, y, test_size=0.1, random_state=1) # print( x_train.shape ) # print( x_test.shape ) # print( y_train.shape ) # print( y_test.shape ) # 훈련 데이터와 테스트 데이터에 대해서 최대 최소 정규화를 수행 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train2 = scaler.fit_transform(x_train) x_test2 = scaler.transform(x_test) #4. 개선 모델 생성( 수치를 예측하는 의사결정 나무 생성--> 회귀트리 ) from sklearn.ensemble import RandomForestRegressor model2 = RandomForestRegressor(random_state =10, n_estimators=200 ) model2 #5. 개선 모델 훈련 model2.fit( x_train2, y_train) #6. 개선 모델 예측 result2 = model2.predict(x_test2) result2 #7. 개선 모델 평가 (상관계수, 오차 확인) #정답과 예측과의 상관계수 import numpy as np print( np.corrcoef( y_test, result2 ) ) # 0.71304028 #정답과 예측과의 오차확인 def mae(x,y): return np.mean(abs(x-y)) print( mae(y_test, result2 ) ) # 0.71304028
시험 볼때는 : 랜덤 포레스트 회귀 모델 쓰면 됨
케글 도전할 때는 : 랜덤 포레스트, 서포트 백터 머신, 신경망 모델로 다양하게 사용
처음에 모델 생성 → 개선된 모델 생성했을 때 개선이 있었다면 그걸 스토리를 잘 만들어서 포트폴리오를 생성하면 됨
문제3. 서포트 벡터 머신 모델로 변경해서 모델을 생성하기
개선 모델 :
from sklearn.svm import SVC
model4 = SVC(C=200, gamma=
#1. 데이터 로드 import pandas as pd wine = pd.read_csv("c:\\data\\whitewines.csv") wine.head() #2. 결측치 확인 wine.isnull().sum() #3. 훈련과 테스트 분리 from sklearn.model_selection import train_test_split x = wine.iloc[ : , 0:-1] # 맨끝의 컬럼인 quality 를 제외 y = wine.iloc[ : , -1 ] # 맨끝의 정답 데이터 x_train, x_test, y_train, y_test = train_test_split( x, y, test_size=0.1, random_state=1) # print( x_train.shape ) # print( x_test.shape ) # print( y_train.shape ) # print( y_test.shape ) # 훈련 데이터와 테스트 데이터에 대해서 최대 최소 정규화를 수행 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train2 = scaler.fit_transform(x_train) x_test2 = scaler.transform(x_test) #4. 개선 모델 생성( 수치를 예측하는 의사결정 나무 생성--> 회귀트리 ) from sklearn.svm import SVC model4 = SVC(gamma = 3, C = 200) model4 #5. 개선 모델 훈련 model4.fit( x_train2, y_train) #6. 개선 모델 예측 result2 = model4.predict(x_test2) result2 #7. 개선 모델 평가 (상관계수, 오차 확인) #정답과 예측과의 상관계수 import numpy as np print( np.corrcoef( y_test, result2 ) ) # 0.46067544 #정답과 예측과의 오차확인 def mae(x,y): return np.mean(abs(x-y)) print( mae(y_test, result2 ) ) # 0.5428571428571428
0.46067544 ← 상관계수가 더 떨어졌음
현장에서도 마감날짜가 있으므로 성능 개선에 너무 많은 시간을 쏟지 말고, 발표자료에 모델별 성능을 표로 정리를 해서 제출 ( 선택은 고객이 할 수 있도록 함)
문제4. 신경망으로 수치를 예측하기
개선모델 :
from sklearn.neural_network import MLPRegressor
model5 = MLPRegressor(random_state =1, hidden_layer_sizes=(200,50) )
#1. 데이터 로드 import pandas as pd wine = pd.read_csv("c:\\data\\whitewines.csv") wine.head() #2. 결측치 확인 wine.isnull().sum() #3. 훈련과 테스트 분리 from sklearn.model_selection import train_test_split x = wine.iloc[ : , 0:-1] # 맨끝의 컬럼인 quality 를 제외 y = wine.iloc[ : , -1 ] # 맨끝의 정답 데이터 x_train, x_test, y_train, y_test = train_test_split( x, y, test_size=0.1, random_state=1) # print( x_train.shape ) # print( x_test.shape ) # print( y_train.shape ) # print( y_test.shape ) # 훈련 데이터와 테스트 데이터에 대해서 최대 최소 정규화를 수행 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train2 = scaler.fit_transform(x_train) x_test2 = scaler.transform(x_test) #4. 개선 모델 생성( 수치를 예측하는 의사결정 나무 생성--> 회귀트리 ) from sklearn.neural_network import MLPRegressor model5 = MLPRegressor(random_state =1, hidden_layer_sizes=(200,50) ) #5. 개선 모델 훈련 model5.fit( x_train2, y_train) #6. 개선 모델 예측 result2 = model5.predict(x_test2) result2 #7. 개선 모델 평가 (상관계수, 오차 확인) #정답과 예측과의 상관계수 import numpy as np print( np.corrcoef( y_test, result2 ) ) # 0.57334932 #정답과 예측과의 오차확인 def mae(x,y): return np.mean(abs(x-y)) print( mae(y_test, result2 ) ) #0.5769286331025102
실험결과를 표로 생성:
상관계수 오차
- 랜덤 포레스트 모델 0.71
- 서포트 백터 머신 모델 0.51
- 신경망 모델 0.57
📝빅분기 실기 2회 시험 작업형 2번 환경 만들기
# 데이터 만들기 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split # 가상 데이터 생성 (정답이 명확히 구분되는 단순한 패턴) np.random.seed(42) n_samples = 1000 # 학습 데이터 생성 X = pd.DataFrame({ 'cust_id': range(1, n_samples + 1), 'Age': np.random.randint(18, 70, size=n_samples), 'Income': np.random.randint(30000, 120000, size=n_samples), 'Previous_Purchases': np.random.randint(0, 20, size=n_samples), 'Web_Visits': np.random.randint(1, 100, size=n_samples) }) # 구매 여부는 단순히 이전 구매 횟수가 10 이상인 경우로 가정하여 y 생성 y = (X['Previous_Purchases'] >= 10).astype(int) # y를 데이터프레임으로 변환 y = pd.Series(y, name='Purchased') # 데이터 크기 확인 (디버깅 목적) print(f"X 데이터 크기: {X.shape}") print(f"y 데이터 크기: {y.shape}") # ■ 시험환경 만들기. 훈련 데이터와 테스트 데이터를 생성합니다. # 훈련 데이터와 테스트 데이터를 분리합니다. x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # 만든 데이터를 시험환경에 저장합니다. (폴더 생성도 해주기!) x_train.to_csv("c:\\data\\test2\\X_train.csv", index=False) y_train.to_csv("c:\\data\\test2\\y_train.csv", index=False) x_test.to_csv("c:\\data\\test2\\X_test.csv", index=False)
⭐빅분기 3회 작업형2번 문제. 특정 여행객 데이터 셋을 바탕으로 여행 보험 상품 가입 여부를 예측하는 분류 모델을 생성하기 . 모델은 주어진 데이터를 학습하고 테스트 데이터를 사용하여 예측할 것
- 숫자와 문자 같이 있는 유형 풀
#1. 데이터 생성 import pandas as pd import numpy as np # ▣ 시험환경 만들기 1. 여행보험 예측을 위한 가상 데이터 생성 # 가상 데이터 생성 np.random.seed(42) n_train_samples = 1490 n_test_samples = 497 # 훈련 데이터 생성 x_train = pd.DataFrame({ 'index': range(1, n_train_samples + 1), 'Age': np.random.randint(18, 70, size=n_train_samples), 'Income': np.random.randint(30000, 120000, size=n_train_samples), 'Marital_Status': np.random.choice(['Single', 'Married'], n_train_samples), 'Employment_Type': np.random.choice(['Employed', 'Self-Employed', 'Unemployed'], n_train_samples), 'Previous_Claims': np.random.randint(0, 10, size=n_train_samples), 'Family_Size': np.random.randint(1, 7, size=n_train_samples), 'Travel_History': np.random.choice(['Frequent', 'Occasional', 'Rare'], n_train_samples), 'Destination_Type': np.random.choice(['Domestic', 'International'], n_train_samples), 'Flight_Class': np.random.choice(['Economy', 'Business'], n_train_samples) }) # 여행보험 가입 여부 (약 7:3 비율) y_train = pd.Series(np.random.choice([0, 1], size=n_train_samples, p=[0.7, 0.3]), name='Travel_Insurance') # 테스트 데이터 생성 x_test = pd.DataFrame({ 'index': range(n_train_samples + 1, n_train_samples + n_test_samples + 1), 'Age': np.random.randint(18, 70, size=n_test_samples), 'Income': np.random.randint(30000, 120000, size=n_test_samples), 'Marital_Status': np.random.choice(['Single', 'Married'], n_test_samples), 'Employment_Type': np.random.choice(['Employed', 'Self-Employed', 'Unemployed'], n_test_samples), 'Previous_Claims': np.random.randint(0, 10, size=n_test_samples), 'Family_Size': np.random.randint(1, 7, size=n_test_samples), 'Travel_History': np.random.choice(['Frequent', 'Occasional', 'Rare'], n_test_samples), 'Destination_Type': np.random.choice(['Domestic', 'International'], n_test_samples), 'Flight_Class': np.random.choice(['Economy', 'Business'], n_test_samples) }) # CSV 파일로 저장 x_train.to_csv('c:\\data\\test3\\train_data.csv', index=False) y_train.to_csv('c:\\data\\test3\\y_train.csv', index=False) x_test.to_csv('c:\\data\\test3\\test_data.csv', index=False)
#1. 데이터 불러오기 X_train = pd.read_csv('c:\\data\\test3\\train_data.csv') y_train = pd.read_csv('c:\\data\\test3\\y_train.csv') X_test = pd.read_csv('c:\\data\\test3\\test_data.csv') #2. 'index' 컬럼 제거 X_train2 = X_train.drop(columns=['index']) X_test2 = X_test.drop(columns=['index']) X_train2.head(5) #3. 문자형 컬럼을 숫자로 변환합니다. # ※ 파이썬은 R 과는 다르게 문자형을 숫자형으로 변환해주는 작업을 해줘야합니다. # 문자를 숫자로 바꾸는 파이썬 함수 2개 ? # 1. pd.get_dummies(x) # 2. LabelEncoder() from sklearn.preprocessing import MinMaxScaler, LabelEncoder for i in X_train2.select_dtypes( include=['object'] ).columns: le = LabelEncoder() X_train2[i] = le.fit_transform(X_train2[i]) X_test2[i] = le.fit_transform(X_test2[i]) #4. 데이터를 정규화합니다. scaler = MinMaxScaler() x_train3 = scaler.fit_transform(X_train2) x_test3 = scaler.fit_transform(X_test2) #print(x_train3) #5. 모델 생성 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=1) #6. 모델 훈련 model.fit( x_train3, y_train ) #7. 모델 예측 pred = model.predict( x_test3 ) #8. 정답 제출 pd.DataFrame( {'index' : X_test.index, 'label' : pred }).to_csv('003000.csv', index=False) #9. 모델 평가 from sklearn.metrics import accuracy_score y_hat = model.predict(x_train3) accuracy_score( y_hat, y_train ) #1.0
📝빅분기 실기 기출문제_4회 작업형 2번
# 데이터 만들기 # 데이터 생성하기 import pandas as pd import numpy as np # ▣ 시험환경 만들기 1. 세분화 시장 예측을 위한 가상 데이터 생성 # 가상 데이터 생성 np.random.seed(42) n_train_samples = 1000 n_test_samples = 300 # 훈련 데이터 생성 X_train = pd.DataFrame({ 'ID': range(1, n_train_samples + 1), 'Age': np.random.randint(18, 70, size=n_train_samples), 'Income': np.random.randint(30000, 120000, size=n_train_samples), 'Car_Ownership_Years': np.random.randint(1, 15, size=n_train_samples), 'Annual_Spend': np.random.randint(10000, 50000, size=n_train_samples) }) # Segmentation (1, 2, 3, 4) 라벨 생성 y_train = pd.Series(np.random.choice([1, 2, 3, 4], size=n_train_samples), name='Segmentation') # 테스트 데이터 생성 X_test = pd.DataFrame({ 'ID': range(n_train_samples + 1, n_train_samples + n_test_samples + 1), 'Age': np.random.randint(18, 70, size=n_test_samples), 'Income': np.random.randint(30000, 120000, size=n_test_samples), 'Car_Ownership_Years': np.random.randint(1, 15, size=n_test_samples), 'Annual_Spend': np.random.randint(10000, 50000, size=n_test_samples) }) # CSV 파일로 저장 X_train.to_csv('c:\\data\\test4\\train.csv', index=False) y_train.to_csv('c:\\data\\test4\\y_train.csv', index=False) X_test.to_csv('c:\\data\\test4\\test.csv', index=False)
문제. 한 자동차 회사는 새로운 마케팅 전략을 수립하기 위해 고객을 4개의 세분화된 시작으로 나누었음. 기존 고객 데이터를 바타응로 신규고객이 어떤 세분화된 시장(segmentation: 1,2,3,4) 에 속할지 예측하는 모델을 구축하기#1. 데이터 불러오기 import pandas as pd x_train = pd.read_csv("c:\\data\\test4\\train.csv") y_train = pd.read_csv("c:\\data\\test4\\y_train.csv") x_test = pd.read_csv("c:\\data\\test4\\test.csv") print(x_train.shape) #(1000, 5) print(x_test.shape) #(300, 5) print(y_train.shape) #(1000, 1) x_train.head(10) #y_train.head(5) #2. id 컬럼 제거해서 정규화하기 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() scaler.fit(x_train.drop(columns=['ID'])) #정규화 계산 수행 x_train2 = scaler.transform(x_train.drop(columns=['ID'])) #훈련 데이터 정규화 수행 x_test2 = scaler.transform(x_test.drop(columns=['ID'])) #테스트 데이터 정규화 수행 #3. 모델 생성하기 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() #4. 모델 훈련 model.fit(x_train2, y_train) #5. 모델 예측 pred = model.predict(x_test2) #6. 정답 제출 pd.DataFrame( {'ID': x_test.ID, 'label' : pred}).to_csv('수험번호.csv',index=False) #7. 모델 평가(훈련 데이터) from sklearn.metrics import accuracy_score y_hat = model.predict(x_train2) accuracy_score(y_hat,y_train) #1.0
📝빅분기 실기 기출문제_5회 작업형 2번
# 데이터 만들기 import pandas as pd import numpy as np # ▣ 시험환경 만들기1. 수리 비용 예측을 위한 가상 데이터 생성 # 가상 데이터 생성 np.random.seed(42) n_samples = 1000 # 학습 데이터 생성 X = pd.DataFrame({ 'device_id': range(1, n_samples + 1), 'year': np.random.randint(2010, 2022, size=n_samples), # 제조연도 'usage_hours': np.random.randint(100, 10000, size=n_samples), # 사용시간 'warranty': np.random.randint(1, 5, size=n_samples), # 보증기간 (연도) 'battery_life': np.random.randint(50, 100, size=n_samples), # 배터리 수명 (%) 'storage_capacity': np.random.randint(32, 1024, size=n_samples) # 저장 용량 (GB) }) # 수리 비용은 사용시간과 보증기간을 기반으로 예측 y = (X['usage_hours'] / 100) + (X['storage_capacity'] / 10) - (X['warranty'] * 50) # y를 데이터프레임으로 변환 y = pd.Series(y, name='repair_cost') # 데이터 크기 확인 (디버깅 목적) print(f"X 데이터 크기: {X.shape}") print(f"y 데이터 크기: {y.shape}") # ■ 시험환경 만들기2. 훈련 데이터와 테스트 데이터를 생성합니다. # 훈련 데이터와 테스트 데이터를 분리합니다. x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # 만든 데이터를 시험환경에 저장합니다. x_train.to_csv("X_train.csv", index=False) y_train.to_csv("y_train.csv", index=False) x_test.to_csv("X_test.csv", index=False)
📝빅분기 실기 기출문제 6 작업형 2번
# 훈련 데이터 만들기 import pandas as pd import numpy as np # 가상 데이터 생성 np.random.seed(42) n_samples = 1000 # 학습 데이터 생성 data = { 'car_id': range(1, n_samples + 1), '차량_연식': np.random.randint(2000, 2021, n_samples), '주행거리': np.random.randint(5000, 200000, n_samples), '연료비': np.random.randint(50, 200, n_samples), '엔진 크기': np.random.randint(1000, 4000, n_samples), '연비': np.random.choice([0, 1], n_samples, p=[0.7, 0.3]) # 연비가 1이면 경제적인 차량, 0이면 비경제적인 차량 } df = pd.DataFrame(data) # CSV 파일로 저장 df.to_csv('c:\\data\\test6\\car_train.csv', index=False) # 테스트 데이터 만들기 import pandas as pd import numpy as np # 가상 테스트 데이터 생성 np.random.seed(42) n_samples = 500 # 테스트 데이터 샘플 개수 # 학습 데이터와 같은 형태의 테스트 데이터 생성 (단, '연비' 열 제외) test_data = { 'car_id': range(1, n_samples + 1), '차량_연식': np.random.randint(2000, 2021, n_samples), '주행거리': np.random.randint(5000, 200000, n_samples), '연료비': np.random.randint(50, 200, n_samples), '엔진 크기': np.random.randint(1000, 4000, n_samples) } df_test = pd.DataFrame(test_data) # CSV 파일로 저장 (정답 없이) df_test.to_csv('c:\\data\\test6\\car_test.csv', index=False)
#1. 데이터 불러오기 import pandas as pd df = pd.read_csv("c:\\data\\test6\\car_train.csv") x_train = df.iloc[ : , 0:5] y_train = df.iloc[ : , 5] x_test = pd.read_csv("c:\\data\\test6\\car_test.csv") #2. 데이터 살펴보기 x_train.isnull().sum() #3. 데이터 정규화 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train2 = scaler.fit_transform(x_train) x_test2 = scaler.transform(x_test) #4. 모델생성 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=1) #5. 모델 훈련 model.fit(x_train2, y_train) #6. 모델 예측 result = model.predict(x_test2) result #7. 정답 제출 pd.DataFrame({'car_id' : x_test['car_id'],'pred' : result}) #pd.DataFrame({'car_id' : x_test['car_id'],'pred' : result}).to_csv("수험번호.csv", index = False) #8. 모델 평가 from sklearn.metrics import accuracy_score y_hat = model.predict(x_train2) accuracy_score(y_hat, y_train)
📝빅분기 실기 7 작업형 2번 (수치예측)
# 데이터 만들기 import pandas as pd import numpy as np # 가상 데이터 생성 np.random.seed(42) n_samples_train = 1000 n_samples_test = 300 # 훈련 데이터 생성 X_train = pd.DataFrame({ 'part_id': range(1, n_samples_train + 1), 'material_quality': np.random.uniform(0.5, 1.5, n_samples_train), 'processing_time': np.random.uniform(20, 200, n_samples_train), 'worker_experience': np.random.randint(1, 20, n_samples_train), 'machine_efficiency': np.random.uniform(70, 100, n_samples_train), 'temperature': np.random.uniform(60, 120, n_samples_train) }) y_train = X_train['material_quality'] * X_train['processing_time'] * 0.05 + \ X_train['worker_experience'] * 0.1 + \ X_train['machine_efficiency'] * 0.2 + \ X_train['temperature'] * 0.05 + np.random.normal(0, 5, n_samples_train) y_train = pd.Series(np.round(y_train), name='total_production') # 테스트 데이터 생성 X_test = pd.DataFrame({ 'part_id': range(n_samples_train + 1, n_samples_train + n_samples_test + 1), 'material_quality': np.random.uniform(0.5, 1.5, n_samples_test), 'processing_time': np.random.uniform(20, 200, n_samples_test), 'worker_experience': np.random.randint(1, 20, n_samples_test), 'machine_efficiency': np.random.uniform(70, 100, n_samples_test), 'temperature': np.random.uniform(60, 120, n_samples_test) }) # CSV 파일로 저장 X_train.to_csv("c:\\data\\test7\\auto_train.csv", index=False) y_train.to_csv("c:\\data\\test7\y_train.csv", index=False) X_test.to_csv("c:\\data\\test7\\auto_test.csv", index=False)
오늘의 마지막 문제. 자동차 부품 제조 회사는 부품 생산량을 예측하기 위해서 다양한 데이터를 수집했음 . 주어진 데이터는 각 부품의 특성과 생산 공정 데이터를 포함하고 있으며, 이를 바탕으로 부품의 총 생산량을 예측하는 모델을 개발하고자함
#1. 데이터 불러오기 import pandas as pd x_train = pd.read_csv("c:\\data\\test7\\auto_train.csv") y_train = pd.read_csv("c:\\data\\test7\y_train.csv") x_test = pd.read_csv("c:\\data\\test7\\auto_test.csv") x_train.head() #2. 데이터 정규화 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train2 = scaler.fit_transform(x_train.drop(columns=['part_id'])) x_test2 = scaler.transform(x_test.drop(columns=['part_id'])) #print(x_train2) #3. 모델 생성 from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() #4. 모델 훈련 model.fit(x_train2, y_train) #5. 모델 예측 pred = model.predict(x_test2) pred #6. 정답 제출 pd.DataFrame({'part_id':x_test['part_id'],'label':pred}) #pd.DataFrame({'part_id':x_test['part_id'],'label':pred}).to_csv("수험번호.csv",index=False) #7. 모델 평가 (상관관계) import numpy as np y_hat = model.predict(x_train2) np.corrcoef(y_hat, y_train.to_numpy().flatten()) #0.96
'빅데이터 분석(with 아이티윌) > python' 카테고리의 다른 글
[빅데이터분석] Python_57. 파이썬과 오라클, mySQL(Maria) (8) | 2024.09.11 |
---|---|
[빅데이터분석] Python_56. 판다스 머신러닝 6.(z검정 통계, 정규검정, 단측검정, 가설검정, anova분석, 비모수 검정,카이제곱 검정 ) (0) | 2024.09.10 |
[빅데이터분석] Python_54. 판다스 머신러닝4. (단순회귀, 신경망 수치예측) (1) | 2024.09.06 |
[빅데이터분석] Python_53. 판다스 머신러닝3 (로지스트 회귀, SVC,다중회귀분석 모델 ) (0) | 2024.09.05 |
[빅데이터분석] Python_52. 판다스 머신러닝2 (의사결정트리, 랜덤 포레스트) (1) | 2024.09.05 |