머신러닝/데이터분석10 시계열 데이터 분석 (ARIMA) Autoregressive Moving Average (ARMA) Autoregressive (AR)t보다 이전에 있었던 정보들을 모두 합한 정보로 yt를 설명한다는 의미를 가짐y에 대해서 p만큼의 과거를 가지고 현재값 예측 Moving Average (MA)ε: 예측값과 실제값의 차이 (residual 혹은 error 로 불림) βo: 항상 1 (βo이면 εt는 yt와 항상 동시에 일어남 -> βo를 존재한다고 가정하고 1로 놓는다)ε에 대해서 q만큼의 과거를 가지고 현재값 예측 αi와 βo를 제외한 βi는 회귀(OLS 등)를 통해 추론 ARMA 조건시계열 데이터가 Stationary Process(정상성을 가진 데이터)여야 함=> 정상성을 갖게 하기 위해 차분을 추가 → ARIMA covaria.. 2024. 7. 23. z-score 기반의 이상치 제거 zcore함수: 평균에서 얼마나 떨어져 있는지 알기 위해 각 데이터에서 평균을 빼고 표준편차고 나눠준다. 사용법 from scipy import stats # Z-score 기반 이상치 제거 z_scores = np.abs(stats.zscore(train_x)) threshold = 3 # 이 값을 조절하여 이상치로 간주되는 임계점을 설정합니다. train_zscore = train.copy()[(z_scores < threshold).all(axis=1)] #이상치 제거하고 남은 데이터 2024. 3. 30. IQR(사분위수) 기반 이상치 검출 및 해결방안 # 이상치를 탐지하는 함수 정의 def detect_outliers(dataframe, column): Q1 = dataframe[column].quantile(0.25) Q3 = dataframe[column].quantile(0.75) IQR = Q3 - Q1 # IQR 기반으로 이상치 범위를 정의 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 이상치의 인덱스를 반환 return dataframe[(dataframe[column] upper_bound)].index # 숫자형 데이터만 대상으로 이상치 탐지 numeric_columns = train.select_dtypes(include=[np.number]).columns.tolist() .. 2024. 3. 30. 데이터 가공 - 데이터 증강 SMOTE 컬럼 내의 클래스별로 속한 데이터 수의 불균형으로 생기는 문제를 해결하기 위해 SMOTE알고리즘 사용 (ex: 성별이라는 컬럼 있을 때 남자가 100명 여자가 10명인 데이터가 있다면 테스트 데이터에서 성별을 남자로 예측할 가능성 높음) 사용이유 불균형한 데이터에서 소수 클래스의 샘플을 증강시켜 데이터를 균형있게 만듦 소수 클래스 샘플과 비슷한 데이터 생성 (합성 소수 샘플링 기술) 사용법 from imblearn.over_sampling import SMOTE smote = SMOTE(random_state = 0) X , y = smote.fit_resample(x , list(y)) #증강된 데이터 반환 2024. 3. 30. 데이터가공 - 문자열 변환 1. Scikit-learn의 LabelEncoder 사용 from sklearn.preprocessing import LabelEncoder model = LabelEncoder() model.fit(df[column]) df[column] = model.predict(df[column]) 문제점 :가중치의 차이가 생길 수 있음 2. 판다스의 get_dummies함수 사용 df_dummies = pd.get_dummies(df[column]) (실제 사용에서는 df_dummies를 원래 데이터 df에 붙여주고 get_dummies함수 적용해준 컬럼 drop) 3. enumerate 사용 dict = { text : i for i, text in enumerate(df[column]) } df[colum.. 2024. 3. 30. 다중 공선성 다중 공선성 문제 회귀 분석에서 독립변수들 간에 강한 상관관계가 나타나는 것 1. corr 메소드를 사용하여 두 변수간에 상관관계를 분석한다. 사용법 import matplotlib.pyplot as plt import seaborn as sns plt.figure() sns.heatmap(train[features].corr(), annot=True) plt.show() 2. variance_inflation_factor 메소드를 사용하여 특정 피처가 다른 피처들로 얼마나 잘 설명될 수 있는지를 확인한다. 사용법 from statsmodels.stats.outliers_influence import variance_inflation_factor vif = pd.DataFrame() vif['featur.. 2024. 3. 30. 이전 1 2 다음