如何使用Python实现机器学习中的常用算法(线性回归、支持向量机、决策树等)
在Python中,有许多机器学习库和框架可以使用,例如scikit-learn、TensorFlow和PyTorch。这些库均提供了实现各种机器学习算法的功能模块。在本文中,我们将介绍如何使用Python实现机器学习中的常用算法,包括线性回归、支持向量机和决策树。
1. 线性回归
在Python中,我们可以使用scikit-learn库的LinearRegression模块来实现线性回归算法。以下是一个示例代码:
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
import pandas as pd
boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)
y = pd.DataFrame(boston.target, columns=['MEDV'])
lm = LinearRegression()
lm.fit(X,y)
print('Intercept:', lm.intercept_)
print('Coefficients:', lm.coef_)
上面代码中,我们使用了波士顿房价数据集(Boston House Prices Dataset),调用sklearn库中的LinearRegression,进行线性回归模型的拟合。当然,我们也可以在不同的数据集上重复上述过程。
2. 支持向量机
支持向量机(Support Vector Machines,SVM)是一种常用的分类算法。在Python中,我们可以使用scikit-learn库的SVC(分类问题)和SVR(回归问题)模块来实现支持向量机算法。
from sklearn import datasets from sklearn import svm iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target model = svm.SVC(kernel='linear') model.fit(X, y) new_observation = [[5.2, 3.6]] print(model.predict(new_observation))
上面的代码中,我们使用iris数据集,将它分成了两个属性(花萼长度和花萼宽度)作为特征,用SVC模块来进行支持向量机分类。
3. 决策树
Python中实现决策树算法的主要库是scikit-learn。scikit-learn的决策树模块为DecisionTreeClassifier和DecisionTreeRegressor。
from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.tree.export import export_text iris = load_iris() X = iris['data'] y = iris['target'] decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2) decision_tree = decision_tree.fit(X, y) tree_rules = export_text(decision_tree, feature_names=iris['feature_names']) print(tree_rules)
在上述代码中,我们使用决策树对于鸢尾花分类。对于决策树模型的可视化,我们可以使用Graphviz等第三方库。用以下的代码可以把决策树模型生成可视化:
from IPython.display import Image from sklearn.tree import export_graphviz import pydotplus dot_data = export_graphviz(decision_tree, out_file=None) graph = pydotplus.graph_from_dot_data(dot_data) Image(graph.create_png())
以上的代码呈现了决策树模型的可视化。深度为1时,我们使用矩形呈现每个节点,当深度大于1时,我们采用“发散树”或“决策树”模型。
在Python中,scikit-learn库也提供了其它的机器学习模型,例如K近邻算法、朴素贝叶斯、神经网络等。以上是如何使用Python实现机器学习中的常用算法,欢迎读者尝试。
