728x90
당연한 말이지만 텍스트 인덱스를 가지고 머신러닝을 돌릴수는 없다. 적어도 내가 아는 바로는 그렇다.
그래서 바꿔줘야함. -> 앞으로 쓸려고 정리해봤다. 혹시 아래 다 읽을 사람이 있을까봐, grade랑 action을 가지고 position을 추측해보는 머 그런느낌적느낌이다.
key = np.array(list(enumerate(revised['grade'].unique())), dtype=str)[:, 1].tolist()
value = list(map(int, np.array(list(enumerate(revised['grade'].unique())))[:,0].tolist()))
revised['grade'].replace(to_replace=key, value=value, inplace=True)
grade.unique()니까 distinct로 값들을 불러와서 enumerate로해서 리스트로 만든다.
이 때.. 각 인덱스(enumerate니까 각 값에 대해서 0부터 ~번호가 부여된다)만 저장한게 value, 값이 key이다.
[:, 0]이런식으로 돼있으니까 데이터프레임을 아는 사람들은 iloc을 잘 생각해보면 이해가 될거라고 생각이 된다.
그렇게 해서 replace로 key로 들어있던 값들을 value로(숫자) 바꿔서 넣는다.
이렇게 필요한 부분을 모두 숫자에 매핑 한다음...
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
#트레인셋 데이터셋 나누고 (비율설정가능)
X_train, X_test, y_train, y_test = train_test_split(revised[['grade', 'action']], revised['position'], random_state=0)
# 이웃 개수를 8 지정 (아무값설정가능. 당연한거지만..) KNN 실습느낌으로 해봤다.
knn = KNeighborsClassifier(n_neighbors=8)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')
#학습시키고
knn.fit(X_train, y_train)
#값들 넣기. 사실 다 default설정이 잘 돼있어서 엄청 잘 모르는 사람은 하나씩 넣어보면서 하면 된다. 메트릭은 거리계산법
#KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')
#예측값 확인
y_pred = knn.predict(X_test)
print("테스트 세트에 대한 예측값 \n {}".format(y_pred))
print("테스트 세트의 정확도 : {:.2f}".format(knn.score(X_test, y_test)))
요렇게 해주면 간단하게 .. 실습이 가능하다.
728x90
'개발 일지 > In general' 카테고리의 다른 글
판다스 필수(주요) 명령어 정리 ㄹㅇ필수인것만,, (0) | 2022.05.26 |
---|