1. 程式人生 > >機器學習入門級小專案——(鳶尾草)

機器學習入門級小專案——(鳶尾草)

#/usr/bin/env python3
#-*- coding:utf-8 -*-
#提醒電腦這是個python3檔案並要求以utf-8格式讀取


# 一、匯入資料:匯入專案執行所需要的庫和匯入需要處理的資料
# 1) 匯入SciPy執行環境(提前執行測試確保環境配置正確)
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split 
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# 2) 輸入資料(為每個資料特徵設定名稱,可以方便後面對資料進行處理)
filename = './iris.data.csv'
# 為每一個特徵起名方便分類處理
names =['separ-length', 'seqar-width', 'petal-length', 'petal-width', 'class']

dataset =read_csv(filename, names=names)



# # 二、概述資料:從不同角度審查資料
# # 1)檢視資料維度(資料的行與列屬性)
# print('資料維度:行 %s,列 %s' % dataset.shape)
#
# # 2) 檢視資料自身部分(對資料本身有個基本的認識)
# print('資料本身前10行:')
# print(dataset.head(10))
#
# # 3) 統計描述資料即各項數值 行數、中位值、最大值、最小值、均值、四分值(中間50%資料的離散程度,其數值越小,說明中間的資料越集中)
# print('描述資料:(行數、中位值、最大值、最小值、均值、四分值)')
# print(dataset.describe())
#
# # 4)資料分類分佈(根據資料特徵名稱來檢視資料)
#
# print(dataset.groupby('class').size())
#
#
# # 三、 資料視覺化
# # 1)箱線圖(屬性與中位值的離散速度) 箱線圖:連線兩個四分位數,再將最大值和最小值與箱子相連線,中位數在箱子中間
# dataset.plot(kind='box', subplots=True, layout=(2, 2), sharex=False, sharey=False)
# pyplot.show()
# # 2)直方圖
# dataset.hist()
# pyplot.show()
# # 3)散點矩陣圖(變數隨自變化而變化的圖)
# scatter_matrix(dataset)
# pyplot.show()

# 四、評估演算法
# 1)分離評估資料集,用於測試演算法
array = dataset.values
X = array[:, 0:4]  # 80%的訓練集
Y = array[:, 4]  # 20%的評估訓練集
Validation_size = 0.2  # 測試集佔比
seed = 7  # 隨機數種子 決定了測試結果
X_train, X_Validation, Y_train, Y_Validation = train_test_split(X,Y,test_size=Validation_size,random_state=seed)

# 2)演算法評估 1.線性迴歸(LR) 2.線性判別分析(LDA) 3.K近鄰(KNN) 4.分類與迴歸樹(CART) 5.貝葉斯分類器(NB) 6.支援向量機(SVM)
models = {}
models['LR'] = LogisticRegression()
models['LDA'] = LinearDiscriminantAnalysis()
models['KNN'] = KNeighborsClassifier()
models['CART'] = DecisionTreeClassifier()
models['NB'] = GaussianNB()
models['SVM'] = SVC()
results = []
for key in models:
    # 將資料集分成十份,輪流將其中9份作為訓練資料,1份作為測試資料,進行試驗。每次試驗都會得出相應的正確率(或差錯率)
    kfold = KFold(n_splits=10, random_state=seed)
    cv_results = cross_val_score(models[key], X_train, Y_train, cv=kfold, scoring='accuracy')
    results.append(cv_results)
    print('%s:%f(%f)' %(key, cv_results.mean(), cv_results.std()))


# 五、實施預測
svm = SVC()
svm.fit(X=X_train, y=Y_train)  # 衝突矩陣
predictions = svm.predict(X_Validation)  # 精確度
print(accuracy_score(Y_Validation, predictions))  # 召回率
print(confusion_matrix(Y_Validation, predictions))  # F1值為精確率和召回率的調和均值
print(classification_report(Y_Validation, predictions))  # 分類

相關推薦

機器學習入門專案——鳶尾

#/usr/bin/env python3 #-*- coding:utf-8 -*- #提醒電腦這是個python3檔案並要求以utf-8格式讀取 # 一、匯入資料:匯入專案執行所需要的庫和匯入需要處理的資料 # 1) 匯入SciPy執行環境(提前執行測試確保環境配置正

機器學習入門之房價預測線性迴歸

#!/usr/bin/env python # coding: utf-8 # In[1]: # 1.定義問題 # 2.匯入資料 # 匯入類庫 import numpy as np import pandas as pd import matplotlib.pyplot as plt impo

【python與機器學習入門1】KNNk近鄰演算法2 手寫識別系統

參考部落格:超詳細的機器學習python入門knn乾貨 (po主Jack-Cui 參考書籍:《機器學習實戰》——第二章 KNN入門第二彈——手寫識別系統demo ——《機器學習實戰》第二章2.3 手寫識別系統       &

機器學習入門之決策樹python實現

本次學習利用MT_Train.csv中所給的資料對MT_Test.csv中的資料進行預測,判斷客戶是否會定期存款。根據所學知識,可採用sklearn中的決策樹等方法進行程式設計。歡迎大家一起討論學習進步。 訓練集和測試集連結如下: 一. 設計思路 1.讀取訓練集和測試集檔

從零單排入門機器學習:線性回歸linear regression實踐篇

class rom enter instr function ont 線性 gin 向量 線性回歸(linear regression)實踐篇 之前一段時間在coursera看了Andrew ng的機器學習的課程,感覺還不錯,算是入門了。這次打算以該課程的作業

白python學習——機器學習篇——k-近鄰演算法KNN演算法

一、演算法理解 一般給你一資料集,作為該題目的資料(一個矩陣,每一行是所有特徵),而且每一組資料都是分了類,然後給你一個數據,讓這個你預測這組資料屬於什麼類別。你需要對資料集進行處理,如:歸一化數值。處理後可以用matplotlib繪製出影象,一般選兩個特徵繪製x,y軸,然後核心是計算出預測點到

Python3.6 20個入門程式

生成的 200 個啟用碼(或者優惠券)儲存到 Redis 非關係型資料庫中。 需求:如何生成優惠券請看二或者三,關鍵問題在如何將生成的資料存入redis資料庫中,由於redis屬於key——value形式,難度在於從沒有用過redis,所以需要仔細說說redis資料庫。 r

Python3.6 20個入門程式

Python3.6 20個小程式入門(三) 需求:將(第二題中)生成的 200 個啟用碼(或者優惠券)儲存到 MySQL 關係型資料庫中。 分析:第二題中使用uuid生成了128位的唯一編碼,但是這種編碼在客戶輸入時及其繁瑣,目前社會上常使用6位——8位的啟用碼是怎麼做的呢

機器學習三--分類--鄰近取樣Nearest Neighbor

post 個數 均衡 urn learning clas 根據 () end 最鄰近規則分類 K-Nearest Neighbor 步驟:   1、為了判斷未知實例的類別,以所有已知類別的實例作為參考。   2、選擇參數K。   3、計算未知實例與所有已知實例的距離。   

機器學習課程不完全收錄持續更新

google 趨勢 con ash color mooc tar 業界 積極 機器學習已經火遍全球了,目前幾乎所有科技公司都或多或少都在積極地響應AI的趨勢,但是此時需要培養更多的人工智能和機器學習專家,然而優質的學習資源卻相當匱乏。幾大科技巨頭和業界領軍大神也相應提供了各

【深度學習】一文讀懂機器學習常用損失函數Loss Function

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

斯坦福NG機器學習聽課筆記-推薦系統recommender system

推薦系統(recommender system) Problem Formulation: RecommenderSystems:為什麼講它有兩個原因:首先它是一個很重要的機器學習應用方向,在很多公司中佔據了重要作用,像亞馬遜之類網站都是很好的建立推薦系統促進商品銷售。其次推薦系

專案Gensim庫--維基百科中文資料處理

1.下載維基百科資料 https://dumps.wikimedia.org/zhwiki/latest/ 2.預處理檔案:將壓縮的檔案轉化成.txt檔案 新增指令碼檔案process.py,程式碼如下: import logging import os.path import sys

收藏!超全機器學習資料合集!附下載

最近在群裡發現一些小夥伴在尋找資料的時候總是無處可找,網上出現很多收集免費資料再去打包收錢的人,我看不慣這樣的人,所以把自己收集的檔案分享給大家。 百度雲經常抽風,如果大家遇到了失效的連結,請在評論區給我評論,我會很快的更新。 1:資料探勘:概念與技術(中文第三版) 連結: https

資源|28本必讀的經典機器學習/資料探勘書籍免費下載

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

機器學習——樸素貝葉斯Naive Bayes詳細解讀

在機器學習中,樸素貝葉斯是一個分類模型,輸出的預測值是離散值。在講該模型之前首先有必要先了解貝葉斯定理,以該定理為基礎的統計學派在統計學領域佔據重要的地位,它是從觀察者的角度出發,觀察者所掌握的資訊量左右了觀察者對事件的認知。 貝葉斯公式

機器學習中的優化演算法附程式碼

摘要 > 優化演算法指通過改善訓練方式,來最小化(或最大化)損失函式E(x) 區域性最優問題 區域性最優與鞍點。在神經網路中,最小化非凸誤差函式的另一個關鍵挑戰是避免陷於多個其他區域性最小值中。實際上,問題並非源於區域性極小值,而是來自鞍點,即一個維度向上傾斜且

機器學習——K-均值聚類K-means演算法

本文轉載自:https://www.cnblogs.com/ybjourney/p/4714870.html 一 K-均值聚類(K-means)概述 聚類 “類”指的是具有相似性的集合。聚類是指將資料集劃分為若干類,使得類內之間的資料最為相似,各類之間的資料相

機器學習1:梯度下降Gradient Descent

分別求解損失函式L(w,b)對w和b的偏導數,對於w,當偏導數絕對值較大時,w取值移動較大,反之較小,通過不斷迭代,在偏導數絕對值接近於0時,移動值也趨近於0,相應的最小值被找到。 η選取一個常數引數,前面的負號表示偏導數為負數時(即梯度下降時),w向增大的地方移動。 對於非單調函式,

Java Swing學習中的細節個人筆記

首先說一下,本文主要記錄個人在學習Java Swing中遇到的問題,由於之前接觸過swing,所以不會講的很詳細。 如果學習和了解Java Swing,建議直接看視訊,下面的講的還是挺不錯的 ①BorderLayout如何修改各個區域大小? 答案:使用