파이썬 예측 알고리즘 | [이것이 데이터 분석이다 With 파이썬_11] 시계열 예측 분석 274 개의 새로운 답변이 업데이트되었습니다.

당신은 주제를 찾고 있습니까 “파이썬 예측 알고리즘 – [이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석“? 다음 카테고리의 웹사이트 you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 한빛미디어 이(가) 작성한 기사에는 조회수 15,650회 및 좋아요 146개 개의 좋아요가 있습니다.

파이썬 예측 알고리즘 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석 – 파이썬 예측 알고리즘 주제에 대한 세부정보를 참조하세요

※ 도서 해당 내용
Chapter 03. 미래를 예측하는 데이터 분석(p162~p180)
– 비트코인 시세 예측하기
– 시간 정보가 포함된 데이터 살펴보기
– 파이썬 라이브러리를 활용해 시세 예측하기
※ 추천합니다!
– 코드를 실행하다가 이론을 모르겠어서 지치는 분들
– 이론을 공부하다가 수학이 막혀서 지치는 분들
– 수학 공부하다가 코드를 잊어보는 분들
WHY,
‘왜’ 가 중요합니다.
왜 이런 코드를 실행하고 분석의 방법을 잡는지
왜 이런 알고리즘이나 분석 방법을 여기서 사용하는지
※ 이 동영상은 『이것이 데이터 분석이다 with 파이썬』 책 내용을 토대로 제작되었습니다.
▶ 도서 자세히 보기 : http://www.hanbit.co.kr/store/books/look.php?p_code=B2717499992
▶ 질문하기 : 영상에 댓글을 달아주세요.

파이썬 예측 알고리즘 주제에 대한 자세한 내용은 여기를 참조하세요.

01-알고리즘 적용 – Kaggle에서 파이썬으로 데이터 분석 시작하기

전처리가 끝난 데이터에 예측 모델 알고리즘을 적용하는 방법을 알아보겠습니다. 지도 학습에 사용하는 몇 가지 알고리즘을 적용하기 위해 ml_fit 함수를 선언하고, …

+ 여기에 더 보기

Source: wikidocs.net

Date Published: 3/29/2022

View: 5720

Machine Learning을 이용한 간단 주식 예측

파이썬 코드는 자주 보는 유튜브 동영상 강의를 참조하였다. 예측 알고리즘은 Radial Basis Function(RBF) 커널을 사용한 SVM을 통하여 구현한다.

+ 여기에 보기

Source: superhky.tistory.com

Date Published: 1/9/2022

View: 7715

티스토리 – 데이터분석, 머신러닝 정리 노트

파이썬 머신러닝 완벽가이드 학습 … LightGBM의 장단점 LightGBM의 장점 (1) XGBoost 대비 더 빠른 학습과 예측 수행 시간 (2) 더 작은 메무리 사용량 (3) 카테고리 …

+ 더 읽기

Source: injo.tistory.com

Date Published: 6/8/2022

View: 2166

[신경망] RNN을 이용한 주식가격 예측 알고리즘 코드

노트/Python : 프로그래밍. [신경망] RNN을 이용한 주식가격 예측 알고리즘 코드. Diane_ …

+ 여기에 더 보기

Source: diane-space.tistory.com

Date Published: 3/10/2021

View: 549

[python/ML] 머신러닝(Machine Learning) – 회귀

오늘은 머신러닝의 기초가 되는 알고리즘 중 하나인 회귀를 사용하여 문제를 해결 … 지도학습에서 회귀(Regression)는 수치예측을 할때 쓰입니다.

+ 여기에 더 보기

Source: wonhwa.tistory.com

Date Published: 8/15/2022

View: 5634

[파이썬 머신러닝 완벽 가이드] 회귀 실습(기본) – 자전거 대여 …

카테고리형 데이터 셋을 One-Hot Encoding을 수행하였는가? 먼저 Linear Regression 모델을 통해서 회귀 예측을 하면 from sklearn.model_selection …

+ 여기에 더 보기

Source: dsbook.tistory.com

Date Published: 6/9/2021

View: 3001

XGBoost 알고리즘을 사용한 이진분류예측모델 적합(with 파이썬)

XGBoost는 GBM계열의 알고리즘으로 기계학습 알고리즘 중 가장 많이 사용되는 알고리즘 중의 하나예요. 알고리즘에 대한 자세한 설명은 아래 포스팅을 …

+ 여기에 자세히 보기

Source: zzinnam.tistory.com

Date Published: 8/6/2022

View: 5700

주제와 관련된 이미지 파이썬 예측 알고리즘

주제와 관련된 더 많은 사진을 참조하십시오 [이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석
[이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석

주제에 대한 기사 평가 파이썬 예측 알고리즘

  • Author: 한빛미디어
  • Views: 조회수 15,650회
  • Likes: 좋아요 146개
  • Date Published: 2020. 3. 1.
  • Video Url link: https://www.youtube.com/watch?v=AuzoQ8eZXEw

01-알고리즘 적용

전처리가 끝난 데이터에 예측 모델 알고리즘을 적용하는 방법을 알아보겠습니다. 지도 학습에 사용하는 몇 가지 알고리즘을 적용하기 위해 ml_fit 함수를 선언하고, 예측 모델을 기본 파라미터로 생성하여 생존률을 알아보겠습니다.

# 지도학습 모델 import from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.svm import SVC from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # data 분리 data = train.drop(‘Survived’, axis=1).values target = train[‘Survived’].values x_train, x_valid, y_train, y_valid = train_test_split(data, target, test_size=0.4, stratify=target, random_state=0) # 모델 적용 함수 def ml_fit(model): model.fit(x_train, y_train) prediction = model.predict(x_valid) accuracy = accuracy_score(prediction, y_valid) print(model) print(f’총 {y_valid.shape[0]}명 중 {accuracy * 100:.3f}% 정확도로 생존을 맞춤’) return model # 기본 설정으로만 테스트 model = ml_fit(RandomForestClassifier(n_estimators=100)) model = ml_fit(LogisticRegression(solver=’lbfgs’)) model = ml_fit(SVC(gamma=’scale’)) model = ml_fit(KNeighborsClassifier()) model = ml_fit(GaussianNB()) model = ml_fit(DecisionTreeClassifier())

기본 설정으로 테스트한 알고리즘의 정확도는 아래와 같습니다. 랜덤 포레스트 알고리즘이 가장 높은 정확도를 보이고 있습니다.

알고리즘 정확도 RandomForestClassifier 79.832% SVC 79.832% LogisticRegression 78.711% DecisionTreeClassifier 77.031% KNeighborsClassifier 75.910% GaussianNB 73.669%

model = ml_fit(RandomForestClassifier(n_estimators=100)) 총 357명 중 79.832% 정확도로 생존을 맞춤 model = ml_fit(LogisticRegression(solver=’lbfgs’)) 총 357명 중 78.711% 정확도로 생존을 맞춤 model = ml_fit(SVC(gamma=’scale’)) 총 357명 중 79.832% 정확도로 생존을 맞춤 model = ml_fit(KNeighborsClassifier()) 총 357명 중 75.910% 정확도로 생존을 맞춤 model = ml_fit(GaussianNB()) 총 357명 중 73.669% 정확도로 생존을 맞춤 model = ml_fit(DecisionTreeClassifier()) 총 357명 중 77.031% 정확도로 생존을 맞춤

설정 변경후 테스트

다음과 같이 설정을 변경후 테스트를 하면 이전에 79.832%이었던 예측률이 81.513%로 높아 지는 것을 알 수 있습니다. 파라미터의 최적화를 통해 알고리즘의 정확도를 높일 수 있습니다.

Machine Learning을 이용한 간단 주식 예측

반응형

이번에는 비교적 간단한 Machine Learning을 이용하여 주식의 종가를 예측하는 것을 알아보겠다.

파이썬 코드는 자주 보는 유튜브 동영상 강의를 참조하였다.

예측 알고리즘은 Radial Basis Function(RBF) 커널을 사용한 SVM을 통하여 구현한다.

컴퓨터공학이나, 소프트웨어 전공이 아니라 Machine Learning에 대한 자세한 내용은 모르지만, 간단히 설명하면 다음과 같다.

서포트 백터 머신(SVM)은 딥러닝은 아니지만 이에 못지 않은 성능을 내는 Machine Learning 알고리즘이며 가볍다는 장점이 있어 분류(Classification)나 회귀(Regression)를 위해 많이 사용된다고 한다.

먼저 기본이 되는 선형 SVM이 있으며 이것은 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘이다.

그러나 데이터가 선형적으로 분류 안되는 경우가 있고 이를 위해 나온 기법이 커널 기법이라고 한다.

커널 기법은 2차원에서 선형적으로 분류할 수 없었던 것을 3차원 공간에서 분류할 수 있도록 하는 것이다.

이러한 커널 기법에는 Polynomial 커널, Sigmoid 커널, 가우시안 RBF 커널등 종류가 많으며 그중 가장 성능이 좋다고 알려진 것이 가우시안 RBF 커널이라고 한다.

여기서는, 선형 SVM과 Polynomial 커널, RBF 커널 세가지를 같이 표현하여 데이터 출력 결과를 비교하고 다음날의 주식 종가를 예측해 보겠다.

[1. 모듈 Import]

다음의 모듈들이 필요하므로 Import 한다.

Python에서 제공하는 SVR 모듈을 포함해서 주식 데이터를 읽어오기 위한 “pandas_datareader”를 Import 한다.

모듈 Import

위에서 google.colab에서 drive를 import 하는 것은 주식 예측 외에 Lotto 데이터도 예측을 해볼 것인데 그때에 google drive에 저장된 Lotto 데이터를 읽어오기 위한 것이다.

[2. 주식 데이터 로드 ]

다음의 코드를 통해 Yahoo Finance에서 코스피 주식 코드 055550에 해당하는 주식 데이터를 읽어온다.

다음의 코드는 전체 데이터 중에서 Machine Learning에 사용될 데이터를 잘라 stock_data_1에 저장한다.

주식 데이터 로드

여기서는 가장 오래된 데이터에서부터 1150개를 빼게 되므로 가장 최근의 데이터부터 일정량이 남아 사용되게 된다.

결과는 다음과 같으며 69개의 데이터가 남았다.

주식 데이터 로드 결과

[3. 기타 세팅 ]

다음은 주식 데이터 중 가장 최근의 하루치 데이터를 추가로 빼서 예측된 결과와 맞춰보기 위해 가장 최근의 데이터를 빼는 내용이다.

이 결과 Machine Learning에 사용되는 데이터는 68개가 된다.

다음은 주식 데이터에서 종가에 해당하는 “Adj Close” 값을 변수에 저장하는 부분이다.

모델을 훈련시키기 위해서 앞에서의 68개 training용 주식 종가 데이터 외에 이와 개수가 동일한 일련번호가 필요하다.

아래는 이 일련번호를 만드는 코드이며 간단히 앞에서의 68개 주식 데이터 개수를 이용하여 만든다.

[4. 알고리즘 적용 및 결과 ]

다음은 선형 SVR과 Polynomial SVR, RBF SVR을 적용하는 부분이며 아래와 같이 Python에서 아주 간단하게 할 수 있다.

Machine Learning 적용과 결과

C와 gamma, degree에 해당하는 매개변수들은 여기서 다루지 않겠다.

알고리즘을 최적으로 만들기 위해서 이 매개변수들을 조정해야 하며 이전에 XGBoost 알고리즘을 통한 주식 종가 예측에서도 이와 유사한 매개변수들이 있었다.

그때와 동일하게 grid search라는 경험적 방법에 의해 최적의 매개변수를 빠르게 찾을 수 있는데 여기에 대한 지식은 많지 않아서 다룰 수가 없다.

또한, 여기서 예측하고자 하는 주식 데이터나 로또 데이터는 사실 데이터 경계로 나눌 수 있는 데이터가 아니라서 크게 의미가 없을 것이라 생각된다.

각 모델의 출력

위는 각 모델이 출력한 결과와 실제 데이터를 도식화한 것이다.

그림에서 보면 알듯이 RBF 모델이 실제 데이터(검은 점)를 가장 잘 따라가고 있음을 알 수 있다.

이제 가장 최근의 날짜를 예측해 보겠다.

아래의 코드에서처럼 하루치를 더 만들어서 각 모델을 통해 예측을 수행하고 그 결과도 표시하였다.

각 모델을 통한 예측 결과

예측하고자 했던 날의 실제 주식 종가는 32050.0이고 가장 가까운 값을 출력한 모델 역시 RBF SVR 모델임을 알 수 있다.

[RBF SVR 을 통한 Lotto 당첨번호 합 예측 ]

이 알고리즘을 이용하여 Lotto 1등 당첨번호의 합을 예측해봤다.

이 블로그에 “Machine Learning을 이용한 Lotto 번호 생성 프로그램” 이란 글이 있는데 여기서 6자리 1등 당첨번호의 합을 예측하고 이 합을 만족하는 조합을 찾는 프로그램에 대한 내용이다.

이 때 예측은 XGBoost 알고리즘을 이용했는데, RBF SVR을 이용한 예측 중 어느 것이 좀 더 정확할지가 궁금해져서 추가로 해 보았다.

결과는 다음과 같다.

943회차 로또 1등 번호의 합은 147이었는데 XGBoost 알고리즘은 118을 예측했고, RBF SVR은 다음의 경향과 함께 148.47을 예측하였다.

각 모델의 출력 각 모델을 통한 예측 결과

위의 각 모델별 출력을 보면 선형이나 Polynomial 보다는 RBF 모델이 좋아 보이지만 그렇다고 주식 종가에 대한 결과에 비해 Lotto 데이터는 확실히 경향을 확인할 수 없다.

그러나 예측 결과에 있어서는 거의 유사한 숫자를 예측했는데 운이 좋았다고 볼 수 있다.

반응형

[신경망] RNN을 이용한 주식가격 예측 알고리즘 코드

RNN을 이용한 stock 종가 예측

1. 순차적인 자료에 대해 인식하거나 의미를 추론할 수 있는 순환 신경망에 대해서 알아보겠습니다. 그 중에서도 time series의 주식 데이터를 이용하여 향후 주식 값을 예측해 보는 모델을 목표로

mybeta.tistory.com

[python/ML] 머신러닝(Machine Learning) – 회귀

반응형

오늘은 머신러닝의 기초가 되는 알고리즘 중 하나인 회귀를 사용하여 문제를 해결하는 방법을 알아보도록 하겠습니다.

머신 러닝(Machine Learning)이란?

머신러닝은 기계학습이라고도 합니다.

수많은 데이터를 컴퓨터에게 학습시켜 그 속에 있는 패턴을 찾아내서 데이터를 사람의 도움 없이 분류하거나 미래를 예측하는 방법이라고도 할 수 있습니다.

머신러닝에서는 지도학습 비지도 학습, 강화학습 등으로 나뉘는데

회귀는 그 중에서도 지도학습에 속합니다.

머신러닝의 흐름

기계학습을 할 때는 보통 아래와 같은 흐름을 가지고 진행합니다.

데이터 수집 전처리 데이터 저장 데이터 학습(학습방법 선택, 매개변수 조정, 학습반복 등) 평가 및 검증

지도학습 이란?

지도학습은 간단히 말해서 기계를 학습할 때 정답을 같이 알려주어 학습하는 방법입니다.

사람이 공부를 할 때 문제지를 읽고 답을 채점하여 학습하는 것처럼

기계도 마찬가지로 어떤 데이터가 있으면 그것의 답을 같이 알려주어 학습을 시키는 방법입니다.

그리고 학습된 내용을 토대로 하여 다른 데이터의 답을 스스로 구할 수 있도록 합니다.

문제와 그에대한 답이 있는 지도학습

회귀(Regression)란?

지도학습에서 회귀(Regression)는 수치예측을 할때 쓰입니다.

정확히는 선형회귀(Linear Regression)가 쓰이는데 선형회귀는 아래와 같은 수식으로 나타낼 수 있습니다.

여기서 a는 기울기(slope), b는 절편(intercept)을 의미합니다.

회귀는 바로 위의 1차함수의 a,b값을 찾아 y값을 찾아내는 방법을 말합니다.

x는 독립변수가 되고 x에 의해 y가 정해지기 때문에 y는 x의 종속변수가 됩니다.

회귀 예제 – 학습 시간에 따른 시험 점수 예측

오늘은 회귀 예제로 학습시간에 따른 시험점수를 예측해 보도록 하겠습니다.

이번에 사용할 데이터는 kaggle에서 제공하는 단순한 공부 시간 및 점수를 가지고 학습 및 예측을 진행해 보겠습니다.

1. 데이터 준비

아래의 링크에서 csv파일을 다운받아 주세요.

https://www.kaggle.com/jahidsizansani/students-study-hour

2. 데이터 확인

그럼 이제 pandas의 .shape() 와 head()를 사용하여 데이터를 확인해 보도록 하겠습니다.

## 판다스로 데이터 확인 ## import pandas as pd study = pd.read_csv(‘Student Study Hour V2.csv’) print(study.shape) study.head()

Student Study Hour V2.csv 는 28개의 행을 가지고 2개의 열(Hours(공부시간), Scores(점수))을 가졌음을 확인 가능합니다.

3. 독립 및 종속변수 설정

회귀를 사용할 때는 x, y값을 정해 주어야 하기 때문에 x(독립변수)는 공부시간, 우리가 구하고자 하는 점수를 y(종속변수)로 사용하도록 하겠습니다.

## 독립 및 종속변수 설정 ## x_study = study[[‘Hours’]] y_study = study[[‘Scores’]] print(x_study.shape, y_study.shape) print(x_study.head(2)) print(y_study.head(2))

이렇게 28행 x 1열의 독립(x) 변수 및 종속(y) 변수를 설정하였습니다.

4. 모델 생성

이제 예측 값을 구하기위한 학습을 진행해 보겠습니다.

학습을 진행하려면 모델을 만들어 그 모델로 학습을 진행하게 됩니다.

우리는 간단히 경력이라는 데이터를 넣어 연봉 값을 구하고자 하기 때문에,

입력 = 1 크기의 층을 넣어주어 출력값(점수) 1개를 가지는 모델을 만들어 주도록 하겠습니다.

그리고 만들어진 모델에 대한 평가 함수로 MSE(Mean Squared Error, 평균 제곱 오차)를 사용하여 이 오차를 최소로 하는 a(기울기)와 b(절편값)를 찾아보도록 하겠습니다.

MSE는 수치예측 모델 평가 시에 주로 사용하며

x에 대한 (실제 y값- 예측값) 을 제곱하고 모두 더하여 평균을 구하는 함수입니다.

MSE 수식

tensorflow를 사용하여 모델을 만들어 보겠습니다.

tensorflow가 설치가 안되어있다면

!pip install tensorflow 를 입력하여 설치 후 사용해 주세요.

#!pip install tensorflow # 모델을 생성합니다. import tensorflow as tf X = tf.keras.layers.Input(shape=[1]) Y = tf.keras.layers.Dense(1)(X) model = tf.keras.models.Model(X, Y) model.compile(loss=”mse”)

그럼 이제 학습을 위한 모델 생성이 완료되었습니다.

5. 학습

이제 위에서 만들어진 모델을 가지고 학습을 진행하여 보겠습니다.

학습을 진행할 때에는 tensorflow의 .fit()메서드를 사용하여 학습을 진행합니다.

위에서 정한 독립, 종속 변수를 위에서 만든 모델을 넣고 15000번 학습을 진행해 보겠습니다.

verbose = 0으로 넣어주어 프로그레스를 생략하도록 하겠습니다.

시간이 오래 걸리지만 에포크당 손실이 어떻게 변하는지 확인하고 싶은 분은 verbose=1로 바꾸어 주세요.

# 모델에 데이터를 학습합니다. model.fit(x_study, y_study, epochs=15000, verbose=0)

학습된 모델이 어떻게 기울기와 절편이 설정되었는지 확인해 보고 싶으면, get_weights()를 사용하여 확인 가능합니다.

model.get_weights()

[array([[9.676896]], dtype=float32), array([3.2012239], dtype=float32)]

위의 모델은 기울기(a)가 9.676896, 절편(b)가 3.2012239 입니다.

이것을 수식으로 나타내면

y(점수) = 9.676896 * x(공부시간) + 3.2012239 로 나타낼 수 있습니다.

6. 예측

이제 학습된 모델로 예측을 해 보겠습니다.

원래는 테스트셋을 학습, 테스트로 나누어 진행하여야 하지만 데이터셋의 양 자체가 적어 x값을 넣어 주고 그 결과를 잘 맞추었는지 확인하도록 하겠습니다.

# 모델을 이용합니다. model.predict(x_study)

위의가 공부시간(x)에따른 y (점수)값입니다.

실제 y값은 아래와 같습니다.

#실제 y 값 y_salary

실제와 똑같지는 않지만 비슷하게 예측한 것을 확인할 수 있습니다. 더욱 정확한 예측값을 원한다면

epochs 를 더 늘려서 학습을 진행해 주시면 됩니다 🙂

전체 코드

## 판다스로 데이터 확인 ## import pandas as pd study = pd.read_csv(‘Student Study Hour V2.csv’) print(study.shape) study.head() ## 독립 및 종속변수 설정 ## x_study = study[[‘Hours’]] y_study = study[[‘Scores’]] print(x_study.shape, y_study.shape) print(x_study.head(2)) print(y_study.head(2)) ## 모델을 생성합니다. X = tf.keras.layers.Input(shape=[1]) Y = tf.keras.layers.Dense(1)(X) model = tf.keras.models.Model(X, Y) model.compile(loss=”mse”) # 모델에 데이터를 학습합니다. model.fit(x_study, y_study, epochs=15000, verbose=0) #가중치 확인 model.get_weights() # 모델을 이용합니다. model.predict(x_study) #실제 y 값 y_salary

코드 파일

Linear_regression.ipynb 0.02MB

참고 자료

– https://opentutorials.org/course/4548

– (책) 정직하게 코딩하며 배우는 딥러닝입문

반응형

[파이썬 머신러닝 완벽 가이드] 회귀 실습(기본) – 자전거 대여 수요 예측

데이터 셋 : https://www.kaggle.com/c/bike-sharing-demand/data 에서 train.csv파일을 bike_train.csv로 저장한 뒤 실습을 진행한다.

데이터 셋의 피처들을 확인하면

datatime : 날짜

season : 1 = 봄, 2 = 여름, 3 = 가을, 4 = 겨울

holiday : 1 = 주말 및 휴일, 0 = 평일

workingday: 1 = 주중, 0 = 주말 및 휴일

weather : 1 = 맑음, 약간 구름 낀 흐림, 2 = 안개, 안개 + 흐림, 3 = 가벼운 눈, 가벼운 비 + 천둥, 4 = 심한 눈/비, 천둥/번개

temp : 온도(섭씨)

atem : 체감 온도(섭씨)

humidity : 상대 습도

windspeed : 풍속

casual : 미등록 사용자 대여수

registered : 등록된 사용자 대여수

count : 대여 횟수(casual + registered)

import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline import warnings warnings.filterwarnings(“ignore”, category = RuntimeWarning) bike_df = pd.read_csv(“bike_train.csv”) print(bike_df.shape) bike_df.head()

필요한 라이브러리들을 import 하고 bike_train.csv 파일을 DataFrame 데이터형으로 만들어서 어떻게 되어있는지 확인한다.

bike_df.info()

각 칼럼들의 데이터 타입을 확인하고 NaN 값이 존재하는지 확인한다.

(간략하게 널값이 있는지 없는지 확인하는 것이고, 이후에 조금 더 세밀하게 확인할 필요가 있다. )

datetime

bike_df.info()를 통해서 피처들의 데이터 타입을 확인해 보면 ‘datetime’ 피처를 제외하고는 모두 숫자형 데이터인것을 확인할 수 있다. datetime은 날짜와 시간을 표시하고 있는 string 데이터 타입을 가진 피처이다.

데이터 가공을 쉽게 하기 위해서 string으로 되어 있는 데이터를 datetime 데이터 형으로 전환한다.

# 문자열을 datetime 타입으로 변경 bike_df[‘datetime’] = bike_df.datetime.apply(pd.to_datetime) # datetime 타입에서 년, 월, 일, 시간 추출 bike_df[‘year’] = bike_df.datetime.apply(lambda x : x.year) bike_df[‘month’] = bike_df.datetime.apply(lambda x : x.month) bike_df[‘day’] = bike_df.datetime.apply(lambda x : x.day) bike_df[‘hour’] = bike_df.datetime.apply(lambda x : x.hour) bike_df.head(3)

pd.to_datetime의 함수를 통해서 datetime 데이터 형으로 전환되고, 이 데이터 타입을 이용해서 쉽게 년,월,일,시의 정보를 추출할 수 있다.

필요없는 피처 삭제하기

위에서 datetime 칼럼을 통해서 년, 월, 일, 시의 정보를 별도의 피처로 만들어 데이터 프레임에 추가하였으므로 datetime 피처는 더이상 필요하지 않다. 또한, casual과 registered 두 피처를 더하면 label data인 count이기 때문에, 학습할 때 이 두 피처를 포함하는 것은 오히려 학습 모델이 Overfitting되도록 한다. 그래서 datetime, casual, registered 세가지의 피처를 삭제한다.

drop_columns = [‘datetime’, ‘casual’, ‘registered’] bike_df.drop(drop_columns, axis = 1, inplace = True)

평가지표

캐글에서 요구한 성능 평가 방법은 RMSLE(Root Mean Squared Log Error)이다.

여기에서 log 안에 +1을 해주는 이유는 p나 a의 값이 0일 때 음의 무한대여서 언더플로우가 발생하는 것을 방지하기 위함이다.

RMSLE의 장점 :

아웃라이어가 있더라도 크게 영향을 받지 않는다.

상대적 Error를 측정

Under Estimation에 큰 페널티를 부여

사이킷런에서는 RMSLE를 제공하지 않아 함수를 직접 만들어야 한다.

from sklearn.metrics import mean_squared_error, mean_absolute_error # log 값 변환 시 NaN 등의 이슈로 log()가 아닌 log1p()를 이용해 RMSLE 계산 def rmsle(y, pred): log_y = np.log1p(y) log_pred = np.log1p(pred) squared_error = (log_y – log_pred)**2 rmsle = np.sqrt(np.mean(squared_error)) return rmsle def rmse(y, pred): return np.sqrt(mean_squared_error(y, pred)) #MSE, RMSE, RMSLE를 모두 계산 def evaluate_regr(y, pred): rmsle_val = rmsle(y, pred) rmse_val = rmse(y, pred) #MAE는 사이킷런의 mean_absolute_error()로 계산 mae_val = mean_absolute_error(y, pred) print(“RMSLE: {0:.3f}, RMSE : {1:.3f}, MAE : {2:.3f}”.format(rmsle_val, rmse_val, mae_val))

마지막 evaluate_regr은 RMSLE, RMSE, MAE를 한꺼번에 출력하는 함수이다.

타깃 데이터의 로그 변환

회귀 모델을 적용하기 전에 데이터 세트에 대해서 먼저 처리해야 할 사항 2가지

결괏값(타깃 데이터)이 정규 분포로 되어 있는가?

카테고리형 데이터 셋을 One-Hot Encoding을 수행하였는가?

먼저 Linear Regression 모델을 통해서 회귀 예측을 하면

from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.linear_model import LinearRegression, Ridge, Lasso y_target = bike_df[‘count’] X_features = bike_df.drop([‘count’], axis = 1, inplace = False) X_train, X_test, y_train, y_test = train_test_split(X_features, y_target, test_size = 0.3, random_state = 0) lr_reg = LinearRegression() lr_reg.fit(X_train, y_train) pred = lr_reg.predict(X_test) evaluate_regr(y_test, pred)

이렇게 모델을 학습하여 예측했을 때, 평가지표는 RMSLE: 1.165, RMSE : 140.900, MAE : 105.924로 나오게 된다.

이 평가 지표는 예측 오류로서는 큰 값이므로, 현재 데이터가 제대로 전처리되지 않은 부분이 존재한다는 것을 시사한다.

실제 값과 예측 값의 차이가 가장 큰 데이터 5개를 확인하는 코드를 짜보자.

# 실제값과 예측 값이 어느 정도 차이가 나는지 DF의 칼럼으로 만들어서 오류 값이 가장 큰 순으로 5개 확인 def get_top_error_data(y_test, pred, n_tops = 5): #DF의 칼럼으로 실제 대여 횟수(Count)와 예측값을 서로 비교할 수 있도록 생성. result_df = pd.DataFrame(y_test.values, columns = [‘real_count’]) result_df[‘predicted_count’] = np.round(pred) result_df[‘diff’] = np.abs(result_df[‘real_count’] – result_df[‘predicted_count’]) #예측값과 실제 값이 가장 큰 데이터 순으로 출력 print(result_df.sort_values(‘diff’, ascending = False)[:n_tops]) get_top_error_data(y_test, pred, n_tops = 5)

실제 자전거 대여 횟수와 예측 자전거 대여 횟수가 500회 이상 차이가 나는 것을 통해서 예측 오류가 크다는 것을 확인할 수 있다. 이렇게 큰 예측 오류가 발생한다면 가장 먼저 살펴볼 것은 타깃값의 분포가 정규 분포를 따르고 있는지 확인하는 것이다.

타깃 데이터의 분포를 확인해보자.

y_target.hist()

0 ~ 200 사이에 타깃 데이터가 몰려 있는 것을 확인할 수 있다. 이렇게 한쪽으로 쏠려 있는 분포를 나타내고 있는 경우에는 로그 변환을 통해서 정규 분포와 비슷한 형태로 변환할 수 있다.

y_log_transform = np.log1p(y_target) y_log_transform.hist()

(np.log1p() 함수를 사용한 것은 0인 데이터의 경우 언더플로우 문제가 발생할 수 있기 때문이다.)

이렇게 타깃 데이터를 변환한 후에 다시 평가를 수행해보자.

# 타깃 칼럼인 count 값을 log1p로 로그 변환 y_target_log = np.log1p(y_target) #로그 변환된 y_target_log를 반영해 학습/ 테스트 데이터 세트 분할 X_train, X_test, y_train, y_test = train_test_split(X_features, y_target_log, test_size = 0.3, random_state = 0) lr_reg = LinearRegression() lr_reg.fit(X_train, y_train) pred = lr_reg.predict(X_test) #테스트 데이터 세트의 Target 값은 로그 변환됐으므로 다시 expm1을 이용해 원래 스케일로 변환 y_test_exp = np.expm1(y_test) # 예측값 역시 로그 변환된 타깃 기반으로 학습돼 예측됐으므로, 다시 expm1로 스케일 변환 pred_exp = np.expm1(pred) evaluate_regr(y_test_exp, pred_exp)

타깃 데이터와 예측값 모두 로그 변환이 되어 있는 상태이므로, 예측까지 진행한 후에 평가 지표를 계산하기 위해서는 다시 np.expm1() 함수를 통해서 실제 값으로 변환해주어야 한다.

평가 지표를 확인해보면, RMSLE: 1.017, RMSE : 162.594, MAE : 109.286 이 나오게 된다.

적절한 조치를 취해 주었지만, 성능 지표가 좋아지지 않거나, 오히려 더 낮은 성능을 보이는 경우가 있다. 이런 경우에는 해당 전처리 과정이 잘못되었을 수도 있지만, 다른 전처리 과정이 추가적으로 필요한 경우도 있다.

One-Hot Encoding

선형 회귀 모델이 학습의 과정을 거쳐 각 피처에 대한 계수를 산출했을 때, 해당 계수가 크다면, 그만큼 결과에 큰 영향을 끼치는 피처라는 것을 의미한다.

따라서, 각 피처의 회귀 계수 값을 시각화해보자.

coef = pd.Series(lr_reg.coef_, index = X_features.columns) coef_sort = coef.sort_values(ascending = False) sns.barplot(x= coef_sort.values, y = coef_sort.index)

Year 피처의 회귀 계수 값이 독보적으로 큰 계수 값을 가지고 있다.

하지만 연도에 따라서 자전거 대여 횟수가 크게 영향을 받는다는 것은 논리에 맞지 않는다.

이렇게 많은 영향을 받는 이유는 year 피처는 연도를 뜻하므로 카테고리 형 피처지만 숫자형 값으로 되어있다. 이처럼 숫자형 카테고리 값을 선형 회귀에 사용할 경우 회귀 계수를 연산할 때 이 숫자형 값에 크게 영향을 받는 경우가 발생할 수 있다. 이런 경우에는 원-핫 인코딩을 적용해 변환한다.

각 피처의 의미를 이해해야 적절한 전처리 과정을 판단할 수 있다.

# ‘year’ ,’month’,’day’,’hour’ 등의 피처를 One-Hot Encoding X_features_ohe = pd.get_dummies(X_features, columns = [‘year’,’month’,’day’,’hour’,’holiday’,’workingday’,’season’,’weather’])

#원-핫 인코딩이 적용된 피처 데이터 세트 기반으로 학습/예측 데이터 분할 X_train, X_test, y_train, y_test = train_test_split(X_features_ohe, y_target_log, test_size = 0.3, random_state = 0) #모델과 학습/ 테스트 데이터 세트를 입력하면 성능 평가 수치를 반환 def get_model_predict(model, X_train, X_test, y_train, y_test, is_expm1=False): model.fit(X_train, y_train) pred = model.predict(X_test) if is_expm1 : y_test = np.expm1(y_test) pred = np.expm1(pred) print(“###”, model.__class__.__name__, ‘###’) evaluate_regr(y_test, pred) #end of function get_model_predict # 모델별로 평가 수행 lr_reg = LinearRegression() ridge_reg = Ridge(alpha = 10) lasso_reg = Lasso(alpha = 0.01) for model in [lr_reg, ridge_reg, lasso_reg]: get_model_predict(model, X_train, X_test, y_train, y_test, is_expm1=True)

One-Hot Encoding을 수행한 결과 예측 오류가 2/3정도로 줄어든 것을 확인할 수 있다. 이번에는 어떤 피처가 예측 결과에 큰 영향을 주는지 계수 값이 큰 피처 상위 25개를 선별하여 시각화해보자.

coef = pd.Series(lr_reg.coef_, index = X_features_ohe.columns) coef_sort = coef.sort_values(ascending= False)[:25] sns.barplot(x = coef_sort.values, y = coef_sort.index)

회귀 트리 모델을 이용하여 예측

from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor from xgboost import XGBRegressor from lightgbm import LGBMRegressor # 랜덤 포레스트, GBM, XGBoost, LightGBM model 별로 평가 수행 rf_reg = RandomForestRegressor(n_estimators = 500) gbm_reg = GradientBoostingRegressor(n_estimators = 500) xgb_reg = XGBRegressor(n_estimators = 500) lgbm_reg = LGBMRegressor(n_estimators = 500) for model in [rf_reg, gbm_reg, xgb_reg, lgbm_reg]: # XGBoost의 경우 DF이 입력될 경우 버전에 따라 오류 발생 가능. ndarray로 변환 get_model_predict(model, X_train.values, X_test.values, y_train.values, y_test.values, is_expm1= True)

이전에 배웠던 여러가지 회귀 트리 모델들을 이용해서 학습 및 예측을 수행한 후에 성능 지표를 확인해보자.

One-Hot Encoding을 수행한 후 예측했을 때보다 오류가 절반정도로 줄어든 것을 확인할 수 있다. 하지만, 항상 회귀 트리 모델이 선형 회귀 모델보다 더 좋은 성능을 낸다는 것을 보장하지는 않는다. 데이터에 따라서 더 좋은 성능을 보이는 모델이 다르므로, 실제 데이터 분석을 하는 경우에는 많은 모델들을 사용하여 학습 및 예측을 수행하고 성능을 비교해야 한다.

reference :파이썬 머신러닝 완벽 가이드

https://bkshin.tistory.com/entry/머신러닝-17-회귀-평가-지표

https://ahnjg.tistory.com/90

XGBoost 알고리즘을 사용한 이진분류예측모델 적합(with 파이썬)

XGBoost는 GBM계열의 알고리즘으로

기계학습 알고리즘 중 가장 많이 사용되는

알고리즘 중의 하나예요.

알고리즘에 대한 자세한 설명은

아래 포스팅을 참고하시면 됩니다.

본 포스팅에서는 파이썬에서 제공하는 XGBoost 알고리즘을 활용하여

간단한 이진 분류 예측모델 적합 예시를

보여드리도록 하겠습니다.

사용할 데이터는 lightgbm(with) 예시에서

사용했던 것과 동일한 것으로 하고,

그 결과를 서로 비교해 볼게요.

사용할 데이터입니다.

bank.csv 0.38MB

그럼 단계별로 하나씩 진행해 보겠습니다!!

Step0) 실습에 필요한 패키지 준비

제가 사용한 패키지는 총 8개입니다.

뭐가 이렇게 많지 하시겠지만,

어렵고 이해하기 힘든 패키지는 하나도 없습니다.

걱정하지 마시고, 따라 해 보세요.

## 데이터 핸들링을 위한 패키지 ( 설명은 여기 를 참고 )

import pandas as pd

## 수치 연산에 필요한 패키지 (설명은 여기 를 참고 )

import numpy as np

## xgboost 알고리즘을 적용하기 위한 패키지

import xgboost as xgb

## 난수 발생을 위한 패키지

import random

## 수학 함수를 사용하기 위한 패키지

import math

## xgboost feature importance 표현을 위해 필요한 모듈

from xgboost import plot_importance

## 그래프 표현을 위해 필요한 패키지

import matplotlib.pyplot as plt

## 최종 모형의 성능을 평가하기 위해 만든 사용자 정의 함수

## 제가 자체적으로 만든 함수여서 실행하면 에러 납니다.

## 아래 함수는 그냥 무시하에요^^

from md_validation import * import pandas as pdimport numpy as npimport xgboost as xgbimport randomimport mathfrom xgboost import plot_importanceimport matplotlib.pyplot as plt## 최종 모형의 성능을 평가하기 위해 만든 사용자 정의 함수## 제가 자체적으로 만든 함수여서 실행하면 에러 납니다.## 아래 함수는 그냥 무시하에요^^from md_validation import *

컴퓨터에 상기에 나열된 패키지가 없으신 분들은

아마 위의 문장을 입력하면 에러가 발생할 거예요.

위의 문장들은 패키지 로딩을 위한 명령어이고,

패키지 자체가 없으신 분들은

pc에 패키지를 먼저 설치하셔야 합니다.

설치 방법은 아래와 같아요.

## 명령 프롬프트 창에서 아래 명령문을 입력

pip install (패키지명)

# 예) xgboost를 설치하고자 한다면, pip install xgboost

※ 파이썬에서 제공하는 xgboost 알고리즘과 관련된 패키지는 크게 2가지가 있어요

(파이썬 래퍼와 싸이킷런 래퍼).

저는 파이썬 래퍼를 활용했습니다. 참고하세요.

Step 1) 데이터 준비 및 데이터 탐색

패키지 준비가 끝났으면

데이터를 파이썬으로 읽어 들입니다.

## 데이터 준비

dataSet = pd.read_csv(“D:/bank.csv”)

그럼, 파이썬에 dataSet이라고 하는

데이터 프레임이 생성되었습니다.

우선적으로 몇 개의 observation과 column으로

이루어져 있는지를 파악해야 합니다.

shape 매소드를 이용하면 됩니다.

dataSet.shape

데이터를 살펴보니,

4,521개의 observation과

18개의 column으로 이루어져 있네요.

그다음 확인해야 할 부분은 아래 2가지입니다.

1. column의 type

2. missing여부

xgboost 알고리즘을 활용하기 위해서는 모든 데이터가

숫자형으로 이루어져 있어야 하기 때문에,

범주형(문자형) column의 경우에는

더미 변수를 변환해 주어야 합니다.

그리고, 특정 column의 missing 비율이 높으면

해당 column은 모형 적합에 제외해야 합니다.

이를 한 번에 확인할 수 있는 함수는 info()입니다.

## 데이터 파악하기

dataSet.info()

Non-Null Count 칼럼을 보면,

모든 column의 값에 null이 없어서,

missing data는 별도로 진행할 필요가 없네요.

(4521 non-null: null이 없는 observation의 건수가 4,521개)

자! 그다음은 변수형입니다.

int로 시작하는 column은

숫자형으로 별도 처리가 필요하지 않지만,

object로 표시되어 있는 column들은

범주형(문자형) 변수이기 때문에

더미 변수로 변환해 주어야 합니다.

더미변수로 변환하기 위해서는

pandas 패키지의 get_dummise 함수를

사용하면 됩니다.

참고로, y column은 label data

(종속변수, 타겟변수라고도 함)이기 때문에

더미 변환을 하지 않아요.

## 범주형 변수에 대한 더미 변수 생성

finalDataSet = pd.get_dummies(dataSet, columns = [‘job’,’marital’,’education’,’default’,’housing’,’loan’,’contact’,

‘month’,’poutcome’])

## 더미 변수 변환 전 column 리스트 확인

dataSet.columns

## 더미변수 변환 후 column 리스트 확인

더미변수 변환 전/후를 비교해 보면,

column이 다소 증가한 것으로 확인할 수 있어요.

이는 범주형(문자형) 변수의 category 개수만큼

증가했기 때문이에요.

변환 전 ‘marital’이라는 column은

결혼 상태를 나타내는 변수인데요.

가질 수 있는 category가 3개

(‘divorced(이혼)’ , ‘married(결혼)’, ‘single(결혼 전)’)이기 때문에

3개로 증가하였습니다.

만약, id가 1인 사람이 결혼 전이라고 한다면,

marital_divorced = 0, marital_married = 0, marital_single = 1의

값을 가지게 됩니다.

이제 label data(종속변수, 타겟변수라고도 함)인 y도

범주형(문자형)이기 때문에 숫자로 변환이 필요해요.

해당 값이 어떻게 들어가 있는지 확인해 보면,

dataSet[‘y’].value_counts()

‘no’, ‘yes’의 값을 가지고 있는 것을 확인할 수 있어요.

‘no’ 은 1로 변환하고,

‘yes’는 0으로 변환해서

target이라는 칼럼을 만들고,

y는 지우도록 하겠습니다.

finalDataSet[‘target’] = np.where(finalDataSet[‘y’] == ‘no’, 0,1)

del finalDataSet[‘y’]

Step2) Train 및 Validation Set 분할

이제 본격적으로 알고리즘 적용을 위해 데이터를

train 및 validation으로 분할하겠습니다.

자동적으로 분할해 주는 패키지와 함수들이 있지만,

저는 원시적이지만 근본적인 방법으로 분할할게요.

방법은 난수를 발생시켜,

데이터를 섞은 다음에 데이터를 5:5로

(train 50% 및 validation 50%) 분할하겠습니다.

## train 및 validation set를 구분하기 위한 난수 생성

sample = list(range(len(finalDataSet))) # 데이터 observation에 해당하는 정수를 생성하여 리스트로 저장

random.shuffle(sample) # 리스트를 마구잡이로(랜덤 하게) 섞음

## train 및 validation set 50 : 50으로 분할

trainFinalDataSet = finalDataSet.iloc[sample,].head(len(finalDataSet)//2)

# 섞인 데이터의 상위 50% 를 train으로 지정

valFinalDataSet = finalDataSet.iloc[sample,].tail(math.ceil(len(finalDataSet)/2))

# 섞인 데이터의 하위 50% 를 validation으로 지정

Step 3) XGBoost 알고리즘 활용을 위한 환경 세팅

파이썬에서 제공하는

XGBoost 패키지를 사용하기 위해서는

그에 맞는 형태로 데이터를 변경해 주어야 합니다.

그런 다음, 하이퍼 파라미터를 정의한 후 알고리즘을 수행하면 됩니다.

## XGBoost 알고리즘 적용을 위한 train 및 validation 데이터 환경 설정

dtrain = xgb.DMatrix(trainFinalDataSet.iloc[:,:-1], label=trainFinalDataSet.iloc[:,-1])

dtest = xgb.DMatrix(valFinalDataSet.iloc[:,:-1], label=valFinalDataSet.iloc[:,-1])

## xgboost 주요 하이퍼 파라미터 설정하기

## 하이퍼 파라미터는 매우 중요하기 때문에, 별도 포스팅으로 설명

## 연습 삼아 그냥 세팅하고 실행

param = {

‘max_depth’: 3,

‘eta’: 0.1,

‘sub_sample’ : 0.5,

‘colsample_bytree’ : 0.5,

‘objective’: ‘binary:logistic’,

‘eval_metric’ : ‘auc’,

‘numclass’ : 1

}

num_round = 10

## train set는 ‘train’, validation set는 ‘eval’로 설정

wlist = [(dtrain, ‘train’), (dtest, ‘val’)]

## xgboost 알고리즘을 활용한 학습 수행

bst = xgb.train(params = param, dtrain = dtrain, num_boost_round = num_round, evals = wlist)

학습을 10번 수행하도록 세팅했기 때문에

(num_boost_round = 10)

10번 반복된 결과에 대한 측정지표의 변화를 보여줍니다.

Step 4) 확률 값 산출 및 모형 성능 확인

이제 위에서 산출된 모형을 활용해서

모든 observation에 대한 확률 값을 산출한 후에,

모형의 성능을 비교해 보겠습니다.

## train 및 validation set에 확률값 생성

trainFinalDataSet[‘dtrainPred’] = bst.predict(dtrain)

valFinalDataSet[‘dtestPred’] = bst.predict(dtest)

## train set에 대한 KS 통계량 산출하기

## 사용자 정의 함수(저만 실행되고, 실행되지 않으실 거예요.)

ks_stat(trainFinalDataSet[‘dtrainPred’], trainFinalDataSet[‘target’])

## test set에 대한 KS 통계량 산출하기

ks_stat(valFinalDataSet[‘dtestPred’], valFinalDataSet[‘target’])

확률 값을 기반으로 하여 산출된 모형의 성능 지표 KS통계량의 결과를 보면,

train set 0.6521이고, validation set 0.6626으로

변동성이 거의 없음을 확인할 수 있습니다.

(※ 참고로, ks_stat은 제가 활용하기 위해서 만든 함수로 파이썬에서 별도로 제공하지 않는 함수입니다.)

Step5) 모델에 사용된 feature의 중요도 산출

마지막으로 모형에 활용된 feature들의 중요도(feature importance)를 그림으로 표현해 보겠습니다.

## feature importance 산출하기

fig, ax = plt.subplots(figsize=(20, 24))

plot_importance(bst, ax=ax)

모형에서 가장 중요하게 작용한 feature는

‘duration’임을 확인할 수 있습니다.

이외에도 교차 검증(Cross Validation),

최적 하이퍼 파라미터 산출 등 중요한 내용이 많습니다만,

이는 별도 포스팅으로 자세하게 작성하도록 하겠습니다.

이번 포스팅에서는

기본적인 이진 분류 모델 적용 프로세스를

익히는 것에 중점을 두었습니다.

이상 포스팅을 마치도록 하겠습니다!

키워드에 대한 정보 파이썬 예측 알고리즘

다음은 Bing에서 파이썬 예측 알고리즘 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석

  • 데이터 분석
  • 데이터 과학
  • 데이터
  • 데이터과학자
  • 데이터분석가
  • 파이썬
  • python
  • datascientist
  • datascience
  • data
  • 데이터분석 배우기
  • 데이터분석 책
  • 데이터 과학 책
  • 데이터 분석 책 추천
  • 데이터 분석 기초
  • 데이터 분석 강의
  • 데이터 분석 강좌
  • 데이터 분석 입문
  • 데이터 분석 무료 강의
  • 윤기태
  • ARIMA
[이것이 #데이터 #분석이다 #with #파이썬_11] #시계열 #예측 #분석


YouTube에서 파이썬 예측 알고리즘 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [이것이 데이터 분석이다 with 파이썬_11] 시계열 예측 분석 | 파이썬 예측 알고리즘, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment