빅분기 2회 기출
# 작업형 1유형
# 1. 범죄율 컬럼인 Crim 항목의 상위에서 10번째 값으로 상위 10개의 값을 변환한 후,
# age가 80이상인 데이터를 추출하여 crim의 평균값 추출
# print(df.head())
df = df.sort_values('CRIM', ascending = False)
# print(df['CRIM'].head(20))
# print(df['CRIM'].iloc[9])
# print(df['CRIM'].iloc[:10])
df['CRIM'].iloc[:10] = df['CRIM'].iloc[9]
# print(df['CRIM'].head(20))
cond = df['AGE'] >= 80
df = df[cond]
# print(df.head())
print(df['CRIM'].mean())
# 정답 : 5.759386625
# 작업형 1유형
# 2. 데이터의 첫번째 행부터 순서대로 80%까지의 데이터를 추출한 수, total_bedrooms 변수의 결측치를
해당 변수의 중앙값으로 대체한 데이터로 구성
# 결측치 대체 전의 total_bedrooms 변수 표준편차 값과 결측치 대체 후의 total_bedrooms 변수 표준편차 값의 차이에 대한 절댓값 계산
# print(df.head())
# print(len(df))
df = df.iloc[:int(len(df)*0.8)]
# print(len(df))
# print(df['total_bedrooms'].isnull().sum())
before = df['total_bedrooms'].std()
# print(before)
df['total_bedrooms'] = df['total_bedrooms'].fillna(df['total_bedrooms'].median())
after = df['total_bedrooms'].std()
# print(after)
print(abs(before - after))
# 정답 : 1.9751472916456692
# 작업형 1유형
# 3. population 항목의 이상값의 합계를 계산하시오
# 이상값은 평균에서 1.5 * 표준편차를 초과하거나 미만인 값의 범위로 정한다.
# print(df.head())
# print(df['population'].mean())
# print(df['population'].std())
upper = df['population'].mean() + 1.5 * df['population'].std()
# print(upper)
lower = df['population'].mean() - 1.5 * df['population'].std()
# print(lower)
print(df[(df['population'] > upper) | (df['population'] < lower)]['population'].sum())
# 정답 : 5607295.0
# 작업형 2유형
# 고객이 주문한 물품의 정시 도착인지 (확률)
# 제출한 예측값의 ROC_AUC 점수 결과를 통해 점수 반영
# print(X_train.shape, X_test.shape, y_train.shape)
# print(X_train.head()) #ID 포함
# print(X_test.head()) #ID 포함
# print(y_train.head()) # 타겟 : Reached.on.Time_Y.N
# print(X_train.info()) # object형 4개
# print(X_train.describe())
# 결측치 확인
# print(X_train.isnull().sum()) X
# print(X_test.isnull().sum()) X
# ID값 제거
X_train = X_train.drop('ID', axis = 1)
test_id = X_test.pop('ID')
# print(X_train.head())
# print(X_test.head())
# object형 라벨인코딩
from sklearn.preprocessing import LabelEncoder
cols = X_train.select_dtypes(include = 'object')
# print(cols)
for col in cols :
le = LabelEncoder()
X_train[col] = le.fit_transform(X_train[col])
X_test[col] = le.transform(X_test[col])
# print(X_train.head())
# print(X_test.head())
# 모델 학습 및 예측
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state = 2023)
model.fit(X_train, y_train['Reached.on.Time_Y.N'])
pred = model.predict_proba(X_test)
# print(pred)
# 데이터프레임 생성
pd.DataFrame({
'ID' : test_id,
'Reached.on.Time_Y.N' : pred[:,1]
}).to_csv('1111.csv', index = False)
print(pd.read_csv('1111.csv'))
'빅데이터 & 인공지능' 카테고리의 다른 글
빅분기 4회 실기 기출 (0) | 2023.07.02 |
---|---|
빅분기 3회 실기 기출 (0) | 2023.07.02 |
[머신러닝알고리즘] 주성분분석(PCA) (0) | 2023.07.01 |
[머신러닝알고리즘] K-평균 군집화(K Means Clustering) (0) | 2023.07.01 |
[머신러닝알고리즘] 라이트GBM(LightGBM) (0) | 2023.07.01 |