ex) 각각의 피쳐를 분석하여, 어떤 신생 회사의 데이터가 있으면, 그 회사가 얼마의 수익을 낼 지 예측합니다. (투자를 해야 할지 말아야 할지)
- 신생회사 데이터를 가지고 있다.
- 그 회사의 수익을 보고, 수익을 예측하는 거지, 수치니까. 리그레이션
X값이 많아지니
y = ax1 + bx2 + cx3 + dx4 + e
- 컴퓨터는 먼저 랜덤으로 세팅한다.
1. Nan 처리
df.isna().sum() |
2. X와 y로 분리
X = df.loc[ : , 'R&D Spend' : 'State'] y = df['Profit'] |
3. 원핫 인코딩
- X의 컬럼 중에서 숫자가 아닌 컬럼이 있으니, 숫자로 바꿔준다.
X['State'].nunique() sorted(X['State'].unique()) from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer ct = ColumnTransformer([('encoder',OneHotEncoder(),[3])], remainder= 'passthrough') |
4. 원핫 인코딩 학습
X = ct.fit_transform(X) |
- fit의 의미는 그 컬럼이 몇개냐, 그 컬럼안에 있는 데이터 종류가 몇개냐.
- 확인해서 트랜스폼, 원핫 인코딩으로 바꿔라.
- 원핫 인코딩이 된 값이, ct.fit_transform(X) 결과값의 맨 왼쪽에 나옴. 그 오른쪽이 [0]의 컬럼부터 [1] 컬럼 등
- 이렇게 되면, 방정식이 바뀐다. 왜? X 가 바뀌었잖아.
- 원래는 y = ax1 + bx2 + cx3 + dx4 + e 이였다면, (각 컬럼별로)
- 이제는 이렇게 바뀔듯 X 의 개수의 맞춰서 방정식을 세우니까.
y = ax1 + bx2 + cx3 + dx4 + ex5 + fx6 + gx7 + h
- 'California', 'Florida', 'New York', R&D Spend, Administration, Marketing Spend, State, Profit
5. X,y준비 끝났으니, 학습용과 테스트용으로 데이터 분리
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.2,random_state = 15) |
6. 인공지능 모델링
- 깡통 인공지능 (비어있는 인공지능)을 만들어놓고, 얘보고 학습하라고 한다.
from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(X_train,y_train) |
7. 성능측정
- MSE를 구해서 성능측정!
y_pred = regressor.predict(X_test) error = y_test - y_pred (error**2).mean() |
8. 그래프로 표시
plt.plot(y_test.values) plt.plot(y_pred) plt.legend(['Real','Pred']) plt.savefig('chart3.jpg') plt.show() |
ex) R&D 비용은 220,000만 달러, 운영비는 190,000달러, 마케팅비는 500,000달러 이고, 플로리다주에 있는 회사입니다. 회사의 수익을 예측하세요.
1. 넘파이 어레이로 새로운 데이터를 만든다.
new_data = np.array([220000,190000,500000,'Florida']) |
2. 넘파이 어레이의 shape을 맞춰준다. (X_train과 동일하게)
new_data = new_data.reshape(1,4) |
3. 레이블 인코딩이나 원핫 인코딩이 필요하면, 인공지능을 만들때, 사용한 인코더를 사용해야한다.
new_data = ct.transform(new_data) |
- ct는 X의 정보를 가지고 있으니까
- dtype='<U32' 문자열이라는 뜻이다.
4. 만약 데이터가 flost이 아니면, float으로 데이터를 바꿔준다.
new_data = new_data.astype(float) |
5. 예측 함수인, predict를 호출한다.
regressor.predict(new_data) |
new_data = np.array([220000,190000,500000,'Florida']) X_train.shape X_test.shape new_data = new_data.reshape(1,4) X_train.shape new_data.shape new_data = ct.transform(new_data) new_data X_train.shape X_test.shape new_data.shape new_data = new_data.astype(float) new_data regressor.predict(new_data) |
'Python-머신러닝' 카테고리의 다른 글
Logistic Regression 로지스틱 회귀: Confusion Matrix, accuracy_score(), classification_report() (0) | 2022.05.08 |
---|---|
linear regression 실습 + 미지수, 상수값: coef_, intercept_ (0) | 2022.05.08 |
Linear Regression (0) | 2022.05.08 |
Dataset의 Training용과 Test 용: X_train,X_test,y_train,y_test (0) | 2022.05.06 |
Nan 처리, 문자열 처리(레이블/원핫 인코딩): LabelEncoder,OneHotEncoder, ColumnTransformer (0) | 2022.05.06 |