[기계 학습] 도 아마추어가 scikit-learn을 사용하여 야메 분류를 시도했습니다.
8595 단어 파이썬scikit-learn아야메 분류기계 학습
scikit-learn을 사용하여 얼음 분류를 해 보았으므로 가볍게 메모를 정리합니다.
이번에는 환경 구축이 필요없는 개발 환경 Google Colaboratory를 사용합니다.
이번에 할 일
기계 학습 라이브러리인 scikit-learn을 사용해 원래 샘플 데이터가 준비되어 있는 얼음 데이터를 사용해, 가는 조각이나 꽃잎 폭이나 길이를 수치화해 어디의 얼음인지 기계 학습으로 판별합니다
필요한 라이브러리 등을 가져옵니다.
1.pyimport pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
데이터 세트
2.pydataSet = load_iris()
irisData = pd.DataFrame(dataSet.data, columns=["がく片の長さ","がく片の幅","花びらの長さ","花びらの幅"])
irisData['花の種類'], irisData['Target'] = dataSet.target_names[dataSet.target], dataSet.target
irisData의 내용을 확인하면 이런 느낌의 데이터가 나온다고 생각합니다.
뾰족한 조각의 길이
뾰족한 조각의 폭
꽃잎의 길이
꽃잎의 폭
꽃의 종류
Target
0
5.1
3.5
1.4
0.2
setosa
0
1
4.9
3.0
1.4
0.2
setosa
0
2
4.7
3.2
1.3
0.2
setosa
0
3
4.6
3.1
1.5
0.2
setosa
0
4
5.0
3.6
1.4
0.2
setosa
0
...
...
...
...
...
...
...
145
6.7
3.0
5.2
2.3
virginica
2
146
6.3
2.5
5.0
1.9
virginica
2
147
6.5
3.0
5.2
2.0
virginica
2
148
6.2
3.4
5.4
2.3
virginica
2
149
5.9
3.0
5.1
1.8
virginica
2
학습용(훈련용) 및 테스트용 작성
모델에 데이터를 학습(훈련용)하고 테스트용 데이터 분할을 만듭니다.
디폴트는 test_size=0.25로 25%가 테스트용, 나머지의 75%가 훈련용이 되지만 0.3 쪽이 밸런스적으로 좋을 것 같기 때문에 설정한다(요출전?)
3.pyirisDataTarget = pd.DataFrame(dataSet.target, columns=["Target"])
X_train, X_test, y_train, y_test = train_test_split(irisData.loc[:, ["がく片の長さ", "がく片の幅", "花びらの長さ", "花びらの幅"]], irisDataTarget, test_size=0.3)
데이터 시각화
4.pyimport seaborn as sns
import japanize_matplotlib
sns.set(font="IPAexGothic") #ラベル名に日本語が入っていると文字化けするので設定する
sns.pairplot(irisData.loc[:, ["がく片の長さ", "がく片の幅", "花びらの長さ", "花びらの幅", "花の種類"]], hue="花の種類")
시각화된 결과
꽃잎의 길이와 꽃잎의 폭, 특징량이 잘 분별할 수 있어 그렇기 때문에 문제 없을 것 같네요!
모델링
scikit-learn에는 다양한 알고리즘을 가지고 어느 것을 선택하면 좋은지 치트 시트가 있으므로 이 기사를 참고하여 최적의 알고리즘을 결정합니다.
htps : // 이 m / 곧 _ 오가와_
이번은 교사 있어 학습이므로 치트 시트를 따라 YES or No 를 진행해 가면 LinerSVC라고 하는 알고리즘을 사용하기로 합니다.
파라미터 튜닝은 일단 기본값으로 모델링됩니다.
5.pymodel = LinearSVC()
model.fit(X_train, y_train)
a = model.score(X_train, y_train)
결과
0.9619047619047619
실행하면 약 96% 정도 정답하고 있네요. 상당한 정확도입니까? 파라미터 튜닝을 하면 더 좋아지는 것이 아닐까 생각하고 있습니다.
구축한 모델에 데이터를 던져 보자
구축한 모델에 찢어진 조각의 길이 등을 넣어 어디의 아야메인지 예측해 보겠습니다.
뾰족한 조각의 길이
뾰족한 조각의 폭
꽃잎의 길이
꽃잎의 폭
꽃의 종류
Target
0
5.1
3.5
1.4
0.2
setosa
0
145
6.7
3.0
5.2
2.3
virginica
2
6.pytestData = [
[6.7, 3.0, 5.2, 2.3],
[5.1, 3.5, 1.4, 0.2]
]
model.predict(data)
결과
array([2, 0])
잘 갈 것 같네요. (작은 느낌)
라고 이런 느낌에 바삭하게 구축해 보았습니다만, 도 아마추어도 간단하게 실장할 수 있었습니다.
Reference
이 문제에 관하여([기계 학습] 도 아마추어가 scikit-learn을 사용하여 야메 분류를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/owen11/items/738e5eb90205038e4bb7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
dataSet = load_iris()
irisData = pd.DataFrame(dataSet.data, columns=["がく片の長さ","がく片の幅","花びらの長さ","花びらの幅"])
irisData['花の種類'], irisData['Target'] = dataSet.target_names[dataSet.target], dataSet.target
irisDataTarget = pd.DataFrame(dataSet.target, columns=["Target"])
X_train, X_test, y_train, y_test = train_test_split(irisData.loc[:, ["がく片の長さ", "がく片の幅", "花びらの長さ", "花びらの幅"]], irisDataTarget, test_size=0.3)
import seaborn as sns
import japanize_matplotlib
sns.set(font="IPAexGothic") #ラベル名に日本語が入っていると文字化けするので設定する
sns.pairplot(irisData.loc[:, ["がく片の長さ", "がく片の幅", "花びらの長さ", "花びらの幅", "花の種類"]], hue="花の種類")
model = LinearSVC()
model.fit(X_train, y_train)
a = model.score(X_train, y_train)
0.9619047619047619
testData = [
[6.7, 3.0, 5.2, 2.3],
[5.1, 3.5, 1.4, 0.2]
]
model.predict(data)
array([2, 0])
Reference
이 문제에 관하여([기계 학습] 도 아마추어가 scikit-learn을 사용하여 야메 분류를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/owen11/items/738e5eb90205038e4bb7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)