사내 공부회 기계 학습 입문(7.아야메를 분류해 보자)

오늘의 주제는 "아야메를 분류하는 기계 학습 프로그램"입니다. (이것도 유명한 소재입니다.)

소재



아야메를 분류하는 프로그램입니다.
아야메의 품종을 분류하는 데 관련된 데이터가 GitHub에 공개되어 있으므로 이 데이터(csv 파일)를 다운로드하여 사용합시다.

아야메 데이터의 CSV 데이터
↑를 클릭하고 브라우저에 표시된 CSV 데이터를 "오른쪽 클릭"하여 저장합니다.
파일 이름을 "iris.csv"로 설정하고 C:\ml-intro 바로 아래에 저장하십시오.

데이터를 보자.



야마메의 분류에 관련된 특징이 수치화되고 있네요.


<아야메 데이터의 내용>


열 이름
설명


SepalLength
뾰족한 조각의 길이

SepalWidth
뾰족한 조각의 폭

PetalLength
꽃잎의 길이

PetalWidth
꽃잎의 폭

이름
아야메의 품종명


분류와 관련된 특징은 '가쿠편의 길이', '가쿠편의 폭', '꽃잎의 길이', '꽃잎의 폭'의 4가지군요.
「아야메의 품종명」은 정답 라벨입니다.

아야메의 품종으로는 "Iris-Setosa""Iris-Versicolor""Iris-Virginica"의 3 가지로 분류된다고합니다.

(이미지는 htps //w w. 따뜻한 mp. 코 m / 안녕하세요 ty / 쓰리 아 ls / 마치네 보다 인용)

그럼, 미지의 데이터에 대해서, 3개 중 어느 쪽으로 분류하는 기계 학습 프로그램을 써 갑시다.

목표까지의 단계


  • "iris.csv"를 읽어들입니다.
  • 읽은 아야메의 CSV 데이터에는 정답 라벨이 붙어 있으므로 분리한다.
  • 모든 데이터 중 70%를 훈련용 데이터로, 30%를 판정용 데이터로 나눈다.
  • 훈련 데이터를 사용하여 학습한다.
  • 판정용 데이터(미지의 데이터라고 하는 상정)를 주어, 올바르게 분류할 수 있었는가? 평가합니다.

  • 학습에 사용하는 알고리즘은 지원 벡터 머신을 사용합니다.
    알고리즘의 선정에 대해서는, ↓의 정보를 알기 쉽다고 생각했습니다.
    [참고 정보] htps : // Enginee rs.ぇぢぢgぱrk. 이. jp/? p=872

    여기에서가 본제! 기계 학습 프로그램을 작성해 봅시다.



    먼저 "Pandas"라는 Python으로 데이터 분석을 효율적으로 수행하기위한 라이브러리를 설치하십시오.
    (데이터의 로드나 통계량의 표시, 그래프화 등을 편하게 할 수 있다.)$ pip install pandas
    필요한 라이브러리 가져오기
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.svm import SVC
    from sklearn.metrics import accuracy_score
    

    【Step1】아야메 데이터의 로드
    # 【Step1】アヤメデータの読み込み
    iris_data = pd.read_csv("iris.csv", encoding="utf-8")
    

    【Step2】읽은 아야메 데이터에는 정답 라벨이 붙어 있으므로 분리한다
    # 【Step2】読み込んだアヤメデータには、正解ラベルが付いているので分離する
    y = iris_data.loc[:,"Name"]
    x = iris_data.loc[:,["SepalLength","SepalWidth","PetalLength","PetalWidth"]]
    

    【Step3】모든 데이터 중 70%를 훈련용 데이터로, 30%를 판정용 데이터로 나눈다.
    # 【Step3】全データのうち70%を訓練用データに、30%を判定用データに分ける。
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, train_size = 0.7, shuffle = True)
    

    【Step4】 학습한다(알고리즘은, 서포트 벡터 머신(클래스 분류)의 하나인 SVC를 사용한다.)
    # 【Step4】学習する(アルゴリズムは、サポートベクターマシン(クラス分類)の1つであるSVCを使う。)
    clf = SVC()
    clf.fit(x_train, y_train)
    

    【Step5】평가한다
    # 【Step5】評価する
    y_pred = clf.predict(x_test)
    print("正解率 = " , accuracy_score(y_test, y_pred))
    



    정답률 = 약 96%! 뭐 그렇죠?

    요약



    이번에도, 전회에 이어, 「기계 학습의 분위기」를 느꼈습니다.
    점차 기계 학습 프로그램의 흐름이 잡혀 온 것이 아닐까요?
    다음 번에는 기상 데이터를 바탕으로 한 "예측"에 도전하고 싶습니다.

    좋은 웹페이지 즐겨찾기