import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [3])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [3])], remainder='passthrough')
: OneHotEncoder()를 사용하여 인덱스 3에 있는 열을 원핫 인코딩(one-hot encoding)
: 열 인덱스 3에 있는 범주형 변수(카테고리 변수)를 원핫 인코딩.
: remainder 매개변수는 'passthrough'로 나머지 열은 변경 없이 그대로 전달
X = np.array(ct.fit_transform(X))
: ct를 사용하여 데이터 X를 변환
: fit_transform 메서드를 호출해 데이터 변환하고, 그 결과를 NumPy 배열인 X에 할당
from sklearn.linear_model import LinearRegression
regressor = LinearRegression() # 다중선형회귀 모델 구축
regressor.fit(X_train, y_train) # 모델을 훈련세트에서 학습시킴
선형회귀분석모델이 이 데이터세트에 대한 학습 마침
LinearRegression클래스만 있으면 가변수의 함정은 걱정할 필요 없음- 최적의 특성을 선택하는 것도 신경쓸 필요 없음
- p-값이 가장 큰 특성을
LinearRegression클래스가 알아서 선택해줌
y_pred = regressor.predict(X_test) #y_pred변수에 테스트세트의 예측 수익 벡터를 할당
np.set_printoptions(precision=2) # 소수점 둘째자리까지만 표시됨
print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1)) #실제 수익과 예축 수익을 담은 두 벡터 나란히 표시(수직방향으로)
#reshape(수직으로 출력)
단순선형회귀와 다른점은 특성이 여러개이므로 테스트세트를 플롯으로 시각화하는 대신 두개의 벡터를 표시
1. 테스트세트의 실제 수익을 담은 벡터(실측 데이터 10개)
2. 동일한 테스트 세트에 대한 예측 수익을 담은 벡터
--> 스타트업의 예측 수익과 실제 수익이 얼마나 비
슷한지 비교

##출력결과
##왼쪽 : 예상수익
##오른쪽 : 실제수익