>백엔드 개발 >파이썬 튜토리얼 >Python에서 회귀 분석을 위해 신경망을 사용하는 방법은 무엇입니까?

Python에서 회귀 분석을 위해 신경망을 사용하는 방법은 무엇입니까?

王林
王林원래의
2023-06-05 12:21:182250검색

인공지능의 발달로 신경망은 회귀분석을 비롯한 여러 분야에서 뛰어난 성능을 보여왔습니다. Python 언어는 기계 학습 및 데이터 분석 작업에 자주 사용되며 Tensorflow 및 Keras와 같은 많은 오픈 소스 기계 학습 라이브러리를 제공합니다. 이 기사에서는 Python에서 회귀 분석을 위해 신경망을 사용하는 방법을 소개합니다.

1. 회귀분석이란 무엇인가요?

통계에서 회귀분석은 연속변수의 수학적 모델을 사용하여 독립변수와 종속변수 간의 관계를 기술함으로써 인과관계를 분석하는 방법입니다. 회귀 분석에서는 일반적으로 선형 방정식을 사용하여 이 관계를 설명합니다. 예:

y = a + bx

여기서 y는 종속 변수, x는 독립 변수, a와 b는 괄호 안의 상수로 선형성을 나타냅니다. 관계의 절편과 기울기. 회귀 분석은 선형 방정식을 적용하여 종속 변수의 값을 예측할 수 있습니다. 복잡하거나 비선형 관계가 있는 데이터의 경우 더 복잡한 모델을 사용할 수 있습니다.

2. 회귀 분석에 신경망 적용

신경망은 여러 노드로 구성된 복잡한 수학적 모델로, 입력 데이터의 패턴과 패턴을 학습하여 새로운 데이터를 예측합니다. 회귀분석에 신경망을 적용하는 방법은 종속변수와 독립변수를 네트워크에 입력하고 신경망을 훈련시켜 이들 사이의 관계를 찾는 것이다.

기존 회귀 분석과 달리 신경망은 데이터를 분석할 때 선형 또는 비선형 방정식을 미리 정의할 필요가 없습니다. 신경망은 자동으로 패턴과 패턴을 찾고, 입력 데이터 세트의 세부 사항을 기반으로 학습하고 분석할 수 있습니다. 이를 통해 신경망은 대규모 데이터 세트, 복잡한 패턴 및 비선형성이 있는 데이터에서 탁월한 성능을 발휘할 수 있습니다.

3. 회귀 분석에 Python 사용

Python의 Scikit-learn과 Keras는 신경망 및 회귀 분석을 위한 다양한 도구를 제공하는 두 가지 매우 인기 있는 Python 라이브러리입니다. 여기서는 Keras의 Sequential 모델을 사용하여 간단한 신경망을 구축하고 Scikit-learn의 train_test_split 메서드를 사용하여 알려진 데이터 세트를 나누어 모델을 평가하겠습니다.

1단계: 데이터 전처리

회귀 분석을 위해 신경망을 사용하기 전에 데이터를 준비해야 합니다. 이 기사에서는 온라인 학습 플랫폼 Kaggle의 연료 효율 데이터 세트를 사용합니다. 이 데이터 세트에는 미국 고속도로 교통 안전청의 차량 경제 및 연료 데이터가 포함되어 있습니다. 주행 거리, 실린더 수, 배기량, 마력, 가속도 등 데이터에 포함된 요소는 모두 연비에 영향을 미칩니다.

Pandas 라이브러리를 사용하여 데이터세트를 읽고 처리합니다.

import pandas as pd

#导入数据
df = pd.read_csv('auto-mpg.csv')

2단계: 데이터 전처리

데이터세트를 신경망이 읽을 수 있는 형식으로 변환해야 합니다. Pandas 라이브러리의 get_dummies() 메서드를 사용하여 범주형 변수를 사용할 수 있는 이진 필드로 분해합니다.

dataset = df.copy()
dataset = pd.get_dummies(dataset, columns=['origin'])

다음으로, 모델을 평가하기 위해 데이터 세트를 훈련 세트와 테스트 세트로 분할해야 합니다. 여기서는 Scikit-learn의 train_test_split 방법을 선택합니다.

from sklearn.model_selection import train_test_split

train_dataset, test_dataset = train_test_split(dataset, test_size=0.2, random_state=42)

#获取训练集的目标变量
train_labels = train_dataset.pop('mpg')

#获取测试集的目标变量
test_labels = test_dataset.pop('mpg')

3단계: 신경망 모델 구축

Keras의 Sequential 모델을 사용하여 두 개의 완전히 연결된 숨겨진 레이어가 포함된 신경망 모델을 구축하고 ReLU 레이어를 사용합니다. 활성화 기능이 있습니다. 마지막으로 단일 노드가 있는 출력 레이어를 사용하여 연료 효율성을 예측합니다.

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
])

4단계: 모델 컴파일 및 학습

모델을 학습하기 전에 모델을 컴파일해야 합니다. 여기에서는 평가 측정항목뿐만 아니라 손실 함수와 최적화 프로그램도 지정합니다.

optimizer = keras.optimizers.RMSprop(0.001)

model.compile(loss='mse',
            optimizer=optimizer,
            metrics=['mae', 'mse'])

다음으로 fit() 메서드를 사용하여 모델을 훈련하고 후속 분석을 위해 기록 객체에 저장합니다.

history = model.fit(
  train_dataset, train_labels,
  epochs=1000, validation_split=0.2, verbose=0,
  callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)])

5단계: 모델 평가

마지막으로 테스트 데이터 세트를 사용하여 모델을 평가하고 결과를 y_pred 변수에 저장합니다.

test_predictions = model.predict(test_dataset).flatten()

print('测试集的平均误差: ', round(abs(test_predictions - test_labels).mean(), 2))

이 예에서 우리가 사용한 모델은 약 2.54의 평균 오차로 예측 결과를 생성했으며, 기록 개체에서 테스트 세트와 검증 세트의 손실을 볼 수 있습니다.

4. 요약

이번 글에서는 회귀 분석을 위해 Python에서 신경망을 사용하는 방법을 소개했습니다. 우리는 데이터 전처리부터 시작한 다음 Keras 및 Scikit-learn 라이브러리를 활용하여 모델을 구축 및 교육하고 모델 성능을 평가했습니다. 신경망은 강력한 성능을 가지며 대규모 데이터 세트와 복잡한 비선형 문제를 처리하는 데 매우 높은 결과를 보여줍니다. 다음 회귀 문제에서는 신경망을 사용하여 해결해 보는 것은 어떨까요?

위 내용은 Python에서 회귀 분석을 위해 신경망을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.