본 포스팅에선 인공신경망 실습 시 사용했던 파이썬 코드를 공유합니다.
import pandas as pd from sklearn.neural_network import MLPClassifier from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler data= pd.read_csv('C:\\Users\\Desktop\\파일명.csv', engine='python')
In [14]:
cols_to_keep=['churn','나이','성별','방문빈도','총구매금액','고객기간','결혼여부'] data1=data[cols_to_keep] data1
Out[14]:
churn | 나이 | 성별 | 방문빈도 | 총구매금액 | 고객기간 | 결혼여부 | |
---|---|---|---|---|---|---|---|
0 | 1 | 57 | 1 | 1 | 237500 | 1158 | 0 |
1 | 1 | 50 | 1 | 1 | 610850 | 1206 | 0 |
2 | 1 | 39 | 1 | 1 | 19000 | 1880 | 0 |
3 | 1 | 49 | 1 | 1 | 9500 | 1348 | 0 |
4 | 1 | 42 | 0 | 3 | 589000 | 977 | 0 |
5 | 0 | 62 | 1 | 6 | 634600 | 908 | 0 |
6 | 1 | 46 | 1 | 1 | 779000 | 799 | 0 |
7 | 1 | 39 | 0 | 1 | 58000 | 1526 | 0 |
8 | 1 | 47 | 1 | 1 | 133000 | 967 | 0 |
9 | 1 | 68 | 0 | 2 | 137750 | 1936 | 0 |
10 | 0 | 48 | 1 | 1 | 89250 | 1386 | 0 |
11 | 1 | 53 | 0 | 2 | 1007000 | 1449 | 0 |
12 | 0 | 48 | 1 | 2 | 323200 | 1334 | 0 |
13 | 0 | 39 | 0 | 1 | 260400 | 1499 | 0 |
14 | 0 | 71 | 0 | 4 | 500750 | 1459 | 0 |
15 | 1 | 62 | 1 | 1 | 541500 | 999 | 0 |
16 | 1 | 53 | 1 | 2 | 1957000 | 1420 | 0 |
17 | 1 | 60 | 1 | 3 | 274500 | 1087 | 0 |
18 | 0 | 38 | 1 | 5 | 1932550 | 1494 | 0 |
19 | 0 | 40 | 0 | 1 | 63750 | 1522 | 0 |
20 | 0 | 30 | 1 | 1 | 9500 | 900 | 0 |
21 | 0 | 45 | 1 | 1 | 47500 | 1122 | 1 |
22 | 0 | 58 | 1 | 2 | 48000 | 1283 | 1 |
23 | 1 | 41 | 0 | 1 | 313500 | 1194 | 0 |
24 | 1 | 63 | 0 | 2 | 344800 | 2170 | 0 |
25 | 1 | 36 | 0 | 1 | 337250 | 1043 | 0 |
26 | 1 | 71 | 1 | 1 | 13500 | 1509 | 0 |
27 | 0 | 40 | 1 | 1 | 85500 | 1317 | 0 |
28 | 0 | 43 | 1 | 1 | 98800 | 913 | 0 |
29 | 0 | 28 | 0 | 1 | 184500 | 1101 | 0 |
… | … | … | … | … | … | … | … |
4969 | 0 | 55 | 0 | 1 | 117000 | -20 | 0 |
4970 | 0 | 25 | 1 | 1 | 468000 | -21 | 0 |
4971 | 0 | 63 | 0 | 1 | 214200 | -21 | 0 |
4972 | 0 | 38 | 1 | 1 | 202500 | -18 | 0 |
4973 | 0 | 24 | 1 | 1 | 72000 | -18 | 0 |
4974 | 0 | 59 | 1 | 1 | 222300 | -27 | 0 |
4975 | 0 | 39 | 0 | 1 | 813000 | -17 | 0 |
4976 | 0 | 34 | 1 | 1 | 89100 | -19 | 0 |
4977 | 0 | 33 | 1 | 1 | 207000 | -18 | 0 |
4978 | 0 | 36 | 0 | 1 | 117000 | -24 | 0 |
4979 | 0 | 47 | 1 | 1 | 392000 | -20 | 0 |
4980 | 0 | 33 | 0 | 2 | 103000 | -16 | 0 |
4981 | 0 | 31 | 0 | 1 | 153000 | -22 | 0 |
4982 | 0 | 29 | 1 | 1 | 54000 | -17 | 0 |
4983 | 0 | 26 | 1 | 1 | 88000 | -21 | 0 |
4984 | 0 | 49 | 0 | 1 | 207000 | -22 | 0 |
4985 | 0 | 31 | 1 | 1 | 416000 | -24 | 0 |
4986 | 0 | 45 | 0 | 1 | 304000 | -17 | 0 |
4987 | 0 | 39 | 1 | 1 | 281000 | -27 | 0 |
4988 | 0 | 76 | 0 | 1 | 40000 | -24 | 0 |
4989 | 0 | 51 | 1 | 1 | 678000 | 582 | 0 |
4990 | 0 | 31 | 0 | 1 | 88000 | -17 | 0 |
4991 | 0 | 40 | 0 | 2 | 477000 | -17 | 0 |
4992 | 0 | 42 | 1 | 1 | 108000 | -19 | 0 |
4993 | 0 | 32 | 1 | 1 | 475800 | -23 | 0 |
4994 | 0 | 43 | 1 | 1 | 665000 | -25 | 0 |
4995 | 0 | 32 | 0 | 1 | 225000 | -22 | 0 |
4996 | 0 | 41 | 1 | 1 | 106200 | -16 | 0 |
4997 | 0 | 27 | 1 | 1 | 306000 | -16 | 0 |
4998 | 0 | 31 | 1 | 1 | 88000 | -17 | 0 |
4999 rows × 7 columns
In [15]:
X=data1.drop(['churn'],axis=1) Y=data1['churn'] X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.30)
In [16]:
sc=StandardScaler() #데이터 표준화 sc.fit(X_train) #트레이닝 데이터로 변환계수를 추정
Out[16]:
StandardScaler(copy=True, with_mean=True, with_std=True)
In [17]:
X_train_std=sc.transform(X_train) #standardscale.transform을 이용해 실제로 자료를 반환 X_test_std=sc.transform(X_test)
In [20]:
mlp = MLPClassifier() #다층퍼셉트론분류기 mlp.fit(X_train, Y_train) print("학습용 데이터셋 정확도: {:.3f}".format(mlp.score(X_train, Y_train))) print("검증용 데이터셋 정확도: {:.3f}".format(mlp.score(X_test, Y_test)))
학습용 데이터셋 정확도: 0.704 검증용 데이터셋 정확도: 0.713
In [21]:
data1["predict"] = mlp.predict(X) data1
C:\Users\gksmf\anaconda3\lib\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy """Entry point for launching an IPython kernel.
Out[21]:
churn | 나이 | 성별 | 방문빈도 | 총구매금액 | 고객기간 | 결혼여부 | predict | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 57 | 1 | 1 | 237500 | 1158 | 0 | 1 |
1 | 1 | 50 | 1 | 1 | 610850 | 1206 | 0 | 0 |
2 | 1 | 39 | 1 | 1 | 19000 | 1880 | 0 | 1 |
3 | 1 | 49 | 1 | 1 | 9500 | 1348 | 0 | 1 |
4 | 1 | 42 | 0 | 3 | 589000 | 977 | 0 | 0 |
5 | 0 | 62 | 1 | 6 | 634600 | 908 | 0 | 0 |
6 | 1 | 46 | 1 | 1 | 779000 | 799 | 0 | 0 |
7 | 1 | 39 | 0 | 1 | 58000 | 1526 | 0 | 1 |
8 | 1 | 47 | 1 | 1 | 133000 | 967 | 0 | 1 |
9 | 1 | 68 | 0 | 2 | 137750 | 1936 | 0 | 1 |
10 | 0 | 48 | 1 | 1 | 89250 | 1386 | 0 | 1 |
11 | 1 | 53 | 0 | 2 | 1007000 | 1449 | 0 | 0 |
12 | 0 | 48 | 1 | 2 | 323200 | 1334 | 0 | 1 |
13 | 0 | 39 | 0 | 1 | 260400 | 1499 | 0 | 1 |
14 | 0 | 71 | 0 | 4 | 500750 | 1459 | 0 | 0 |
15 | 1 | 62 | 1 | 1 | 541500 | 999 | 0 | 0 |
16 | 1 | 53 | 1 | 2 | 1957000 | 1420 | 0 | 0 |
17 | 1 | 60 | 1 | 3 | 274500 | 1087 | 0 | 1 |
18 | 0 | 38 | 1 | 5 | 1932550 | 1494 | 0 | 0 |
19 | 0 | 40 | 0 | 1 | 63750 | 1522 | 0 | 1 |
20 | 0 | 30 | 1 | 1 | 9500 | 900 | 0 | 1 |
21 | 0 | 45 | 1 | 1 | 47500 | 1122 | 1 | 1 |
22 | 0 | 58 | 1 | 2 | 48000 | 1283 | 1 | 1 |
23 | 1 | 41 | 0 | 1 | 313500 | 1194 | 0 | 0 |
24 | 1 | 63 | 0 | 2 | 344800 | 2170 | 0 | 1 |
25 | 1 | 36 | 0 | 1 | 337250 | 1043 | 0 | 0 |
26 | 1 | 71 | 1 | 1 | 13500 | 1509 | 0 | 1 |
27 | 0 | 40 | 1 | 1 | 85500 | 1317 | 0 | 1 |
28 | 0 | 43 | 1 | 1 | 98800 | 913 | 0 | 1 |
29 | 0 | 28 | 0 | 1 | 184500 | 1101 | 0 | 1 |
… | … | … | … | … | … | … | … | … |
4969 | 0 | 55 | 0 | 1 | 117000 | -20 | 0 | 0 |
4970 | 0 | 25 | 1 | 1 | 468000 | -21 | 0 | 0 |
4971 | 0 | 63 | 0 | 1 | 214200 | -21 | 0 | 0 |
4972 | 0 | 38 | 1 | 1 | 202500 | -18 | 0 | 0 |
4973 | 0 | 24 | 1 | 1 | 72000 | -18 | 0 | 0 |
4974 | 0 | 59 | 1 | 1 | 222300 | -27 | 0 | 0 |
4975 | 0 | 39 | 0 | 1 | 813000 | -17 | 0 | 0 |
4976 | 0 | 34 | 1 | 1 | 89100 | -19 | 0 | 0 |
4977 | 0 | 33 | 1 | 1 | 207000 | -18 | 0 | 0 |
4978 | 0 | 36 | 0 | 1 | 117000 | -24 | 0 | 0 |
4979 | 0 | 47 | 1 | 1 | 392000 | -20 | 0 | 0 |
4980 | 0 | 33 | 0 | 2 | 103000 | -16 | 0 | 0 |
4981 | 0 | 31 | 0 | 1 | 153000 | -22 | 0 | 0 |
4982 | 0 | 29 | 1 | 1 | 54000 | -17 | 0 | 0 |
4983 | 0 | 26 | 1 | 1 | 88000 | -21 | 0 | 0 |
4984 | 0 | 49 | 0 | 1 | 207000 | -22 | 0 | 0 |
4985 | 0 | 31 | 1 | 1 | 416000 | -24 | 0 | 0 |
4986 | 0 | 45 | 0 | 1 | 304000 | -17 | 0 | 0 |
4987 | 0 | 39 | 1 | 1 | 281000 | -27 | 0 | 0 |
4988 | 0 | 76 | 0 | 1 | 40000 | -24 | 0 | 0 |
4989 | 0 | 51 | 1 | 1 | 678000 | 582 | 0 | 0 |
4990 | 0 | 31 | 0 | 1 | 88000 | -17 | 0 | 0 |
4991 | 0 | 40 | 0 | 2 | 477000 | -17 | 0 | 0 |
4992 | 0 | 42 | 1 | 1 | 108000 | -19 | 0 | 0 |
4993 | 0 | 32 | 1 | 1 | 475800 | -23 | 0 | 0 |
4994 | 0 | 43 | 1 | 1 | 665000 | -25 | 0 | 0 |
4995 | 0 | 32 | 0 | 1 | 225000 | -22 | 0 | 0 |
4996 | 0 | 41 | 1 | 1 | 106200 | -16 | 0 | 0 |
4997 | 0 | 27 | 1 | 1 | 306000 | -16 | 0 | 0 |
4998 | 0 | 31 | 1 | 1 | 88000 | -17 | 0 | 0 |
4999 rows × 8 columns