데이터 분석의 과정
전체적인 순서는 Load DataSet -> Preprocessing -> Explore(각 column 분석 및 예측과 차이점 발견, 그리고 이유에 대한 고찰)
datetime으로 된 데이터는 연월일시분초로 바꿔준다.
train["datetime-year"] = train["datetime"].dt.year
train["datetime-month"] = train["datetime"].dt.month
train["datetime-day"] = train["datetime"].dt.day
train["datetime-hour"] = train["datetime"].dt.hour
train["datetime-minute"] = train["datetime"].dt.minute
train["datetime-second"] = train["datetime"].dt.second
모든 train 데이터에서 바꿔주거나 만들어준 변수는 train 데이터도 빼먹지 않고 바꿔준다.
Seaborn을 시각화 하는 것은 아래와 같이 입력한다.
# matplotlib로 실행하는 모든 시각화를 자동으로 쥬피터 노트북에 띄웁니다.
# seaborn 도 결국에는 matplotlib를 기반으로 동작하기 때문에, seaborn으로 실행하는 모든 시각화도 마찬가지로 쥬피터 노트북에 자동적으로 띄워집니다.
%matplotlib inline
# 데이터 시각화 패키지 seaborn을 로딩합니다. 앞으로는 줄여서 sns라고 사용할 것입니다.
import seaborn as sns
# 데이터 시각화 패키지 matplotlib를 로딩합니다. 앞으로는 줄여서 plt라고 사용할 것입니다.
import matplotlib.pyplot as plt
PLOT 여러 개 배치
figur,((ax1,....)) =plt.subplots(nrows=2,ncols=3) 을 통해서 한 곳에 여러 plot을 배치한다.
# matplotlib의 subplots를 사용합니다. 이 함수는 여러 개의 시각화를 한 화면에 띄울 수 있도록 합니다.
# 이번에는 2x3으로 총 6개의 시각화를 한 화면에 띄웁니다. 시각화의 전체 사이즈는 18x8로 설정합니다.
figure, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots(nrows=2, ncols=3)
figure.set_size_inches(18, 8)
# seaborn의 barplot으로 subplots의 각 구역에 연, 월, 일, 시, 분, 초 별 자전거 대여량을 출력합니다.
sns.barplot(data=train, x="datetime-year", y="count", ax=ax1)
sns.barplot(data=train, x="datetime-month", y="count", ax=ax2)
sns.barplot(data=train, x="datetime-day", y="count", ax=ax3)
sns.barplot(data=train, x="datetime-hour", y="count", ax=ax4)
sns.barplot(data=train, x="datetime-minute", y="count", ax=ax5)
sns.barplot(data=train, x="datetime-second", y="count", ax=ax6)
하나의 plot만 크기 변경하려면 다음과 같이 한다.
plt.figure(figsize = (18, 4))
카테고리컬 변수화에 필수인지? 대한 답변
-
범주형 변수의 경우에 무조건적으로 원핫인코딩을 진행하는 것이 점수의 상승을 보장하지는 않습니다! 많은 차이가 나는지도 그 데이터의 특성에 따라 달라지기때문에 이는 직접 진행하신 후 확인을 해보시는 것이 가장 좋다고 말씀을 드리고 싶구요, 원 핫 인코딩을 한 번씩은 진행하여 확인해보시는 것을 추천드립니다!
Decision tree(DecisionTreeClassifier, DecisionTreeRegressor), Random Forest
# Write your code here!
#scikit-learn ==sklearn
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
#Regressor으로
from sklearn.tree import DecisionTreeRegressor
newModel = DecisionTreeRegressor(random_state = 1 )
# Fit
model.fit(X_train, y_train)
newModel.fit(X_train, y_train)
#Predict
prediction_list = model.predict(X_test)
prediction_listRegressor = newModel.predict(X_test)
submit = pd.read_csv("../data/sampleSubmission.csv")
print(submit.shape)
#submit["count"] = prediction_list
#submit.to_csv("../data/baseresult2.csv", index = False)
submit["count"] = prediction_listRegressor
submit.to_csv("../data/newresult(Dayweek).csv", index = False)
Decision tree는 classfier와 Regressor가 있다.
Classfier는 생존자 vs 사망자 와 같이 classfication 하는데 더 효과가 좋다.
Regressor 는 음의 무한대에서 양의 무한대 까지 숫자를 예측하는데 효과가 좋다.
Random Forest
decision treee에 baggin, bottstrap aggregating 기법을 추가한 것
원본 데이터가 주어지면, 데이터를 복원 추출 하는 것.
Decision Tree보다 거의 언제나 좋은 성능을 보장한다.
from sklearn.ensemble import RandomForestRegressor
forestModel = RandomForestRegressor(random_state = 1)
# Fit
forestModel.fit(X_train, y_train)
# Predict
prediction_listForest = forestModel.predict(X_test)
# submit
submitForest = pd.read_csv("../data/sampleSubmission.csv")
submitForest["count"] = prediction_listForest
submitForest.to_csv ("../data/forest1.csv", index = False)
'세상 바라보는 시선 👁 > Growth Hacking' 카테고리의 다른 글
[Pretotype] 아이디어 불패의 법칙 (0) | 2020.09.03 |
---|---|
[데이터 사이언스] 딥러닝 - one hot encoding 을 하려면... @dsschool (0) | 2020.04.20 |
[Pandas] 시각화 - 한글화 시키기 (0) | 2020.04.09 |
[Python] Flask를 이용하여 서비스 운영 (0) | 2020.04.08 |
[Python] Web scrapper - indeed.com (노마드코더) (0) | 2020.04.07 |
[Python] cheating sheet - 노마드코더 (0) | 2020.04.07 |
[Pandas] Visualization 관련 정리 (시각화) (0) | 2020.03.25 |
♡를 눌러주시면 블로그를 작성하는데 큰 힘이 됩니다♪
로그인이 필요없어요.
로그인이 필요없어요.