머신러닝 노트1: 결정목

2588 단어 Python3기계 학습
  • 그림이 나무를 결정한다.
  • 고객 정보에 따라 살지 안 살지 예측한다.
  • 분석 데이터
    분석 데이터 csv 파일.
    프로젝트는 RID,age(나이),income(수입),student(학생),credit신용도buys_구매 결과

    sklearn을 분석하기 위해서는 전환이 필요합니다.
  • 컴퓨팅 방식
    잎(단점)과 뿌리(root)의 선택이 매우 중요하고 각자의 계산 방법이 있다.
    예:c4.5 cart id3
    이 예의 계산 방식은 id3이다.참조: https://ja.wikipedia.org/wiki/ID3
  • 사용 도구
    python 3 sklearn (기계 학습 계산용)
    Graphiviz(분석 결과dot에서 pdf 그림으로 변환)
  • 작성된 PDF

    소스 코드
    from sklearn.feature_extraction import DictVectorizer
    import csv
    from sklearn import preprocessing
    from sklearn import tree
    from sklearn.externals.six import StringIO
    with open('test_data.csv') as f:
    f_csv = csv.reader(f)
    headers = next(f_csv)
    # csvデータを分析データに転換用
    labelList = [] # 結果データ
    featureList = [] # 属性データ
    
    for row in f_csv:
        labelList.append(row[len(row) - 1])
        rowDict = {}
        for i in range(1, len(row) - 1):
            rowDict[headers[i]] = row[i]
        featureList.append(rowDict)
    
    print(labelList)
    print(featureList)
    
    # sklearnの分析データに転換する
    vec = DictVectorizer()
    dummyX = vec.fit_transform(featureList).toarray()
    
    print("dummyX:" + str(dummyX))
    print(vec.get_feature_names())
    
    print("labellist: " + str(labelList))
    
    # sklearnの結果データに転換する
    lb = preprocessing.LabelBinarizer()
    dummyY = lb.fit_transform(labelList)
    print("dummyY: " + str(dummyY))
    
    # 計算方法を決まり、treeを構築する
    clf = tree.DecisionTreeClassifier(criterion='entropy')
    clf = clf.fit(dummyX, dummyY)
    print("clf:" + str(clf))
    
    with open("test.dot", 'w') as f2:
        # 結果データを出力する
        f2 = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file = f2)
        # dot ファイルからpdfに転換 コマンド: dot -T pdf test.dot -o output.pdf
    
    # 仮に予想データを作成する
    oneRowX = dummyX[0, :]
    print("oneRowX:" + str(oneRowX))
    
    newRowX = oneRowX
    newRowX[0] = 1
    newRowX[2] = 0 
    print("newRowX:" + str(newRowX))
    
    #予想データの結果
    predictedY = clf.predict(newRowX)
    print("predictedY:" + str(predictedY))
    

    좋은 웹페이지 즐겨찾기