자격증/빅데이터분석기사

[빅분기] 실기 시험까지 D-11, 어렵다 어려워

mabb 2021. 11. 23. 07:42
반응형

 

 안녕하세요. 삶의질을 높이기 위해 노력하는 영차영차입니다.
빅데이터분석기사 실기 시험을 위한 본인의 메모 및 공부 목적 포스팅입니다.

시험이 11일 남았음. 이제 화요일 아침이니까 정말 얼마 남지 않았음.
6시 기상, 12시 취침하여 아침 2시간, 저녁 4시간 공부 시간을 확보하자.
화, 수, 목, 금 , 토 , 일, 월, 화 , 수, 목, 금

 

1. 작업형 1 준비 : 인터넷으로 예제문제 찾아 연습하기
2. 작업형 2 준비 :기본 코드 달달 외우기 -> 다른 알고리즘으로 응용해보기
3. 필답형: 용어 - 개념 필답 대비 정리하여 달달 외우기 , 빅분기실기대비 app의 문제를 틈틈이 보고 교재 정리하기

 

기초적인 문법들.
보고 생각해보기

np.abs(arr)
np.sqrt(arr)
np.square(arr)
np.exp(arr)
np.Log(arr)
np.add(arr1,arr2)
np.subtract(arr1,arr2)
np.multiply(arr1,arr2)
np.arange(시작 값, 끝 값, 간격)
np.reshape(차원,행,렬,order='C' or 'F')
np.amax(변수명)
np.amin(변수명)
변수명.dtype 
a = Series([1,2,3,4])
index = ['a',b',''c','d']
x = pd.read_csv('파일명.csv', encoding = 'euc-kr')
데이터세트.head()
데이터세트.tail()
데이터세트['변수명'].value_counts()
데이터세트.describe()
데이터세트[처음출력행 : 마지막 출력행 +1]
데이터세트[['열이름']]
데이터세트[데이터세트.columns[[열 번호]]]
데이터세트.loc[:,행이름]
데이터세트.iloc[첫행:끝행:간격,첫열:끝열:간격]
데이터세트.at[행번호,'열 이름']
데이터세트_카피 = 데이터세트.copy()
데이터세트.columns
데이터세트[['특성1','특성2','특성3','특성4']]
데이터세트.rename(columns={'기존명':'변경명'},inplace =True)
데이터세트['추가할 새로운 변수이름'] = 수식 또는 열 값
del 데이터세트['삭제할 변수명']
데이터세트_조건 = 데이터세트[   (데이터세트['변수명1'] == 1) & (|는 or) (데이터세트['변수명2'] ==1)  ]
데이터세트 = 데이터세트.replace( {'변수명': {기존값:변경값, 기본값2:변경값2, 기존값3:변경값3}} )
데이터세트_넘파이 = 데이터세트.to_numpy()
데이터세트_판다스 = pd.DataFrame(데이터세트_넘파이)
판다스 기술통계량 함수 데이터세트.함수명() count describe min, max argmin, argmax idxmin, idxmax quantile sum mean median mad var std skew kurt cumsum cummin,cummax cumprod diff pct_change corr cov
데이터셋.corr(method = 'pearson'(디폴트) , 'spearman' , 'kendall' )
데이터셋.boxplot(column='변수명')
데이터셋.isnull()
데이터셋.isnull().sum()
데이터셋.dropna(axis=0)
데이터셋.fillna(0)
데이터셋.fillna(method = 'ffill' ,'pad', 'bfill', 'backfill')
np.where ( 조건, x ,y)
lambda x,y:x+y
map (함수,리스트)
.index
데이터셋.select_dtypes(exclude=object)  include = object
데이터셋['변수명'].nunique()
데이터셋[변수명'].unique()
.reset_index(drop =True)
데이터셋['변수명'].astype('float')
.sort_values()   ascending= True 가 디폴트, ascending = False 시 내림차순 , 특성값을 기준으로 
.sort_index() index를 기준으로
.str.contains
pd.options.display.float_format = '{:.1f}.format
.drop_duplicates('변수명')

 

 

머신러닝 패키지
이걸 다 언제 하지 ㅜ

from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import DecisionTreeRegressor

from sklearn.svm import SVC
from sklearn.svm import SVR

from sklearn.neighbors import KNeighborsClassifier
from sklearn.neighbors import KNeighborsRegressor

from sklearn.neaural_network import MLPClassifier

from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import BayesianRidge

from sklearn.linear_model import Ridge
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet

from sklearn.ensemble import VotingClassifier
from sklearn.ensemble import VotingRegressor
from sklearn.ensemble import StackingClassifier
from sklearn.ensemble import StackingRegressor
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import BaggingRegressor
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import AdaBoostRegressor
from sklearn.cluster import KMeans from sklearn.cluster import DBSCAN
from apriori import apriori

 

 

 

#데이터 불러오기

import pandas as pd
x_train = pd.read_csv('파일명',encoding='euc-kr')
x_test = pd.read_csv('파일명',encoding='euc-kr')
y_train = pd.read_csv('파일명',encoding='euc-kr')


#목적 생각하기 /분류인지 회귀인지 비지도학습인지 / 문제의 조건 확인

목적에 맞는 x 값 생각하기.
.corr() 이용 상관계수 확인
범주형 변수와 수치형 변수 구분
필요한 변수 확인


#데이터 파악하기
# 데이터 형태 및 타입 파악

x_train.shape
x_test.shape
y_train.shape

.dtypes()
.info()

# 결측치 파악

x_train.isnull().sum()
x_test.isnull().sum()
y_train.isnull().sum()

# 결측치 처리방법 구상 (제거할지 대체할지)

.dropna(axis= )
.fillna( )


#  이상치 파악

.describe() 평균과 중위값의 차이가 심한지 확인

# 이상치 처리

이상치가 있는 변수를 파악하고 IQR을 이용하여 
제거하거나 대체한다.

# 범주형 변수 처리 

범주형 변수를 분리함.
.pd.get_dummies( )
.replace({ })  이용하여  범주형 값들을 문자형으로 바꿔준 후 
더미변수화 한다.


범주형 변수를 처리하기 위하여
x_train과 x_test를 합쳐야 하는가.







분류문제 기본코드 암기 로지스틱 회귀분석

# 에러 무시하기
import warnings
warnings.filterwarnings("ignore")

# 파일 불러오기
import pandas as pd
data = pd.read_csv('파일명',encoding = 'utf-8')

# 데이터 전처리하기 / 결측치, 이상값, 특성치 처리 등


# 특성값과 레이블값 분리하기
X=data[data.columns[1:10] # 특성값 컬럼 분리
y=data[['Class']]  #레이블 컬럼 분리

# 데이터세트 분리하기
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X,y,stratify = y, random_state = 12)

# 특성치 정규화하기 / 정규화는 민맥스만 써야지~!
from sklearn.preprocessing import MinMaxScaler
scaler = MInMaxScaler()
scaler.fit(x_train)
x_scaled_train = scaler.transform(x_train)
x_scaled_test = scaler.trasform(x_test)

# 기본모델 적용하기
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(x_scaled_train, y_train)
pred_train = model.predict(x_scaled_train)
pred_test = model.predict(x_scaled_test)
#proba_train = model.predict_proba(x_scaled_train)

#스코어 확인하기 (train, test 모두 확인)
model.score(x_scaled_train, y_train)

#분류이므로 오차행렬 확인하기

from sklearn.metrics import confusion_matrix
confusion_train = confusion_matrix(y_train, pred_train)
print("훈련데이터 오차행렬:\n",confusion_train)

#분류예측 레포트 확인하기

from sklearn.metrics import classification_report
cfreport_train = claasification_report(y_train, pred_train)
print("분류예측 레포트:\n:", cfreport_train)

#ROC 지표 확인하기
from sklearn.metrics import roc_curve, auc
from sklearn import metrics
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test,model.decision_function(x_scaled_test)

#하이퍼파라미터 조정하기 / 그리드서치

parameter_grid = {'C': [0.001,0.01,0.1,1,10,100]}
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(LogisticRegression(), parameter_grid, cv=5)
grid_search.fit(x_scaled_train, y_train)

print('베스트파라미터{}'.format(grid_search.best_params_))
print('베스트스코어{ :.4f }'.format(grid_search.best_score__))
print('test셋 스코어: { :.4f}'.format(grid_search.score(x_scaled_test,y_test)))

#하이퍼파라미터 조정하기/ 랜덤서치

from scipy.stats import randint
parameter_distribs= {'C': randint(low=0.001, high=100)}
from sklearn.model_selection import RandomizedSearchCV
random_search = RandomizedSearchCV(LogisticRegression(),param_distributions = parameter_distribs, n_iter = 100, cv = 5)
random_search.fit(x_scaled_train, y_train)

print('베스트파라미터{}'.format(random_search.best_params_))
print('베스트스코어{:.4f}'.format(random_search.best_score_))
print('test셋 스코어: {:.4f}'.format(random_search.score(x_scaled_test,y_test)))










반응형