728x90
반응형

XGBOOST 작업 중 모델링 시간 측정 코드

# ## 4.4.4 시간 측정 (115)
# from sklearn.ensemble import GradientBoostingClassifier
# from xgboost import XGBClassifier
# from sklearn.metrics import accuracy_score
# import time

# start = time.time()
# df.info()
# end=time.time()
# elapsed = end - start
# print('\n실행시간: ' + str(elapsed) + '초')

# ## 4.4.5 속도비교(152)
# %timeit -n 100 -r 3 sum(np.square(range(10000)))
# %%timeit -n 100 -r 3
# summing = 0
# for i in range(10000):
#     summing += i**2
# ## 그레디언트 부스팅 분류
# # 모델크기 제한을 위해서 max_depth =2, n_estimator=100 으로 설정
# start = time.time()
# gbr = GradientBoostingClassifier(n_estimators = 100, max_depth = 2, random_state=2)
# gbr.fit(X_train, y_train)
# y_pred = gbr.predict(X_test)
# score = accuracy_score(y_pred, y_test)
# print('점수: ' + str(score))
# end = time.time()
# elapsed = end-start
# print('실행시간: ' + str(elapsed) + '초')
## XGB 분류
# ### 부스팅 분야에서 타의 추종을 불허하는 속도를 보이는 모델. GPU_0에서 30배 빠름
# start = time.time()
# xg_reg = XGBClassifier(n_estimators=100, max_depth=2, use_label_encoder=False)
# xg_reg.fit(X_train, y_train)
# y_pred = xg_reg.predict(X_test)
# score = accuracy_score(y_pred, y_test)
# print('점수 : ' +str(score))
# end = time.time()
# elapsed=end-start
# print('실행 시간: ' +str(elapsed) + '초')
728x90
반응형
728x90
반응형

에러

TypeError: 'int' object is not iterable

 

코드 

n_row = len(din['Phen_fog'])-1
print(n_row)
for i in n_row:
    if i == 1:
        print(i)

 

원인

for i in n_row: 에서 n_row 가 list 이어야 하는데, 여기서는 정수(int)로만 되어 있음.

다른 언어에서는 for i in (initial, end , increment) 형태로 되나, Python 에서는 배열 전체가 list 로 들어가 있어야 함. 

 

해결

아래와 같이, din['Phen_fog'] 로 수정하면 에러 해결

for i in din['Phen_fog']:
    if i == 1:
        print(i)

 

 

728x90
반응형
728x90
반응형

MS 가 윈도우에서 응용 앱끼리 데이터를 공유하고 제어할 수 있도록 개발한 기술인 OCX 방식으로 제공되는 API를 사용하려면, QAxWidget 클래스를 사용해야 하는데, 이 클래스는   파이썬 PyQt5 패키지에 포함되어 있습니다.

PyQt5는 윈도우 프로그램 개발 GUI 에 많이 사용하고 있습니다. 

 

GUI를 구현하기 위해 PyQt5를 사용하지만, 윈도창을 생성하지 않고 API만을 사용하기 위해서도 PyQt5를  사용합니다. 즉, OCX 방식의 API를 제어하는 목적만으로 사용가능합니다. 

728x90
반응형
728x90
반응형

https://www.inflearn.com/questions/224124

 

MinMaxScaler 수치 원상복구 방법 문의 - 인프런 | 질문 & 답변

안녕하세요. RNN, LSTM, GRU 파트 집중적으로 공부하고 있습니다. 수치의 단위를 맞추기 위해 MinMaxScaler를 사용하여 0~1사이의 값으로 보이는 결과 그래프까지 확인 하였습니다. 다만, 주가예측도, 주

www.inflearn.com

 

 

 

728x90
반응형
728x90
반응형

 

에러

XGBRegression  모델링 에서 발생

 

 

UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details:

 

증상:

nan 으로 나옴

 

 

 

def regression_model(model):
    scores = cross_val_score(model, X_train_std, y_train, scoring='neg_mean_squared_error', cv=kfold)
#     scores = cross_val_score(model, X, y, scoring='mean_squared_error', cv=kfold)
    rmse = (-scores)**0.5
    return rmse.mean()

from xgboost import XGBRegressor
from sklearn.model_selection import cross_val_score
regression_model(XGBRegressor(booster='gblinear'))

 

 

 

해결

 

위 코드 실행 전에 X에 대해서 표준화를 반드시 할 것!!!!

 

# 데이터 표준화   X  에 대해서만!!!
from sklearn.preprocessing import StandardScaler
std_scale = StandardScaler()
std_scale.fit(X_train)
X_train_std = std_scale.transform(X_train)
X_test_std = std_scale.transform(X_test)

 

 

728x90
반응형
728x90
반응형

filtered_df = df[df["Date"].isin(pd.date_range('2020-08-25', '2020-08-27'))]  ## 날짜별로 구분해서 출력
print(filtered_df)

728x90
반응형
728x90
반응형


# ind_sub =  df['NO2'].loc[(df['Date'] >= '2019-11-13 16:00:00') & (df['Date'] <= '2020-02-14 13:00:00')].index.tolist()
# # ind_sub

 

 

728x90
반응형
728x90
반응형

에러:

24:00 로 시간이 표시되면 에러 발생

23:00 로 바꾸고, 날짜 바꾸고 월, 년 다 바꿔야 함. 

 

아래 와 같이 해결

 

 

 

 

코드:

 

from datetime import timedelta
import pandas as pd

df['datetime_zero'] = df['Datetime'].str.replace('24:00', '00:00')
df['datetime_er'] = pd.to_datetime(df['datetime_zero'], format='%Y-%m-%d %H:%M:%S')

selrow = df['Datetime'].str.contains('24:00')
df['datetime_obj'] = df['datetime_er'] + selrow * timedelta(days=1)

 

 

 

https://stackoverflow.com/questions/52688645/valueerror-time-data-10-11-2006-2400-does-not-match-format-d-m-y-hm

 

ValueError: time data '10/11/2006 24:00' does not match format '%d/%m/%Y %H:%M'

I tried: df["datetime_obj"] = df["datetime"].apply(lambda dt: datetime.strptime(dt, "%d/%m/%Y %H:%M")) but got this error: ValueError: time data '10/11/2006 24:00' does not match format '%d/...

stackoverflow.com

 

https://kkwor1d.tistory.com/39?category=986286 

 

[에러해결] datetime | hour 24:00:00 변환 오류

Problem with converting to 'datetime' type: ValueError: hour must be in 0..23. [문제] 시계열 자료에서 시간 데이터는 datetime 처리 후 작업을 하는데, 간혹 데이터 중에 시간 부분이 '24시'로 표현되어 있..

kkwor1d.tistory.com

 

 

 

 

728x90
반응형
728x90
반응형

태양광 계산법

 

https://earthscience.stackexchange.com/questions/14491/how-to-calculate-the-solar-radiation-at-any-place-any-time

 

How to calculate the solar radiation at any place, any time

The solar radiation is one of the important factors controlling the formation of $O_3$, and thereby impacting the levels of various secondary species in the atmosphere. However, in the campaign of

earthscience.stackexchange.com

 

728x90
반응형
728x90
반응형

 

 

 

코드

 

ftr_importances_values = model.feature_importances_
ftr_importances = pd.Series(ftr_importances_values)#, index=X_train.columns)
ftr_top20 = ftr_importances.sort_values(ascending=False)[:20]

plt.figure(figsize=(15,6))
sns.barplot(x=ftr_top20, y=ftr_top20.index)
# plt.show()

728x90
반응형

+ Recent posts