机器学习入门helloworld

机器学习主要使用的技术有numpy、matplotlib、pandas和scikit-learn。下面的例子中主要是使用scikit-learn来进行编程。使用的数据是iris。初学者需要对iris有个了解。

安德森鸢尾花卉数据集.

安德森是一名植物学家,这个数据集他已经进行标定过。所谓的标定,就是他本身作为植物学家,对这些植物了解很透彻,很轻易就将这些花进行了分门类别,并且把他们之间的一些特征进行测量。

完整的数据共五列数据分别对应花萼长度、花萼宽度、花瓣长度、花瓣宽度和种类,其中种类分别为山鸢尾、变色鸢尾和维吉尼亚鸢尾三个类别。数据格式如下:

5.1,3.5,1.4,0.2,Iris-setosa

4.9,3.0,1.4,0.2,Iris-setosa

下面给出代码示例,代码中有解释,具体包括如下知识。

1》标识除了使用什么算法

2》怎么调用拟合

3》怎么预估分类

4》输出预估的结果的准确率

5》怎么画图

6》图进行导出的操作

这篇文章起到个抛砖引玉的作用,大家有什么问题或者能帮助初学者快速入门的技巧希望在评论中进行输出。

# Load libraries
import pandas
from pandas.plotting import scatter_matrix
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import model_selection, tree
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.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn import datasets
import graphviz

# 读取数据
iris = datasets.load_iris()
# 切分,测试训练2,8分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size = 0.2, random_state=0)

# --------------------------------------使用逻辑回归进行测试-----------------------------------
# 逻辑回归 l2为正则项
model = LogisticRegression(penalty='l2')
# 进行训练
model.fit(x_train, y_train)

# 对于线性回归和逻辑回归,其目标函数为:
# g(x) = w1x1 + w2x2 + w3x3 + w4x4 + w0
# 如果有激活函数sigmoid,增加非线性变化  则为分类  即逻辑回归
# 如果没有激活函数,则为回归
# coef_和intercept_都是模型参数,即为w
# coef_为w1到w4
# intercept_为w0
# 评估结果
print ("coef_: ", model.coef_)
print ("intercept_: ", model.intercept_)
# 准确率
print ("准确率precision: %s"%(model.score(x_test, y_test)))
print ("均方误差MSE: %s"%(np.mean((model.predict(x_test) - y_test) ** 2)))

#进行预估
predictions = model.predict(x_test)
sum = 0
for i in range(len(y_test)):
    if predictions[i]==y_test[i]:
        sum +=1

print("sum:%s,len(Y_validation):%s"%(sum,len(y_test)))
print("预测率:%s"%(sum/len(y_test)))

print("-----开始进行使用-----");
print("[7,1,1,1]的类别是%s"%(iris['target_names'][model.predict([[7,1,1,1]])[0]]))


# --------------------------------------使用决策树进行测试-----------------------------------
# 决策树
clf = tree.DecisionTreeClassifier()
# 使用决策树进行拟合
clf = clf.fit(x_train, y_train)
# 训练后就可以画图了
tree.plot_tree(clf, filled=True,feature_names=iris.feature_names,class_names=iris.target_names)
plt.show()

# 导出文件到iris.pdf
dot_data = tree.export_graphviz(clf, out_file=None,
                                feature_names=iris.feature_names
                                ,class_names=iris.target_names,
                                filled=True,
                                rounded=True,
                                special_characters=True)

graph = graphviz.Source(dot_data)
graph.render(view=True, format="pdf", filename="iris")


# 使用决策树进行预估
print("使用决策树进行预估[7,1,1,1]的类别是%s"%(iris['target_names'][clf.predict([[7,1,1,1]])[0]]))
print(clf.predict([[7,1,1,1]]))
print("----------使用决策树进行预估[7,1,1,1]的类别的概率--------------")
print(clf.predict_proba([[7,1,1,1]]))




# --------------------------------------使用多种模型进行拟合,比较哪种模型更好-----------------------------------
# 测试使用的参数和评估指标
seed = 7
scoring = 'accuracy'
# 搭建模型和评估模型
#  Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))

# evaluate each model in turn
results = []
names = []

for name, model in models:
    akfold = model_selection.KFold(n_splits=10, random_state=seed,shuffle=True)

    cv_results = model_selection.cross_val_score(model, x_train, y_train, cv=akfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    # 我们将获得了 6 个模型以及每种模型的准确度评估状况。接下来需要将模型相互比较,选出最准确的那个
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)

# 将模型评估结果用图形表示出来,比较每个模型的跨度和平均准确度。这种衡量模型准确率的方法比较流行,因为每种算法都被评估了 10 次(十折交叉验证法)。
# Compare Algorithms
fig = plt.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
plt.boxplot(results)
ax.set_xticklabels(names)
plt.show()
print("----------end--------------")
exit(0);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值