1. 线性回归的例子:从简单到复杂
2. 使用随机森林分类器对鸢尾花数据集进行分类
3. 使用支持向量机分类器对乳腺癌数据集进行分类
机器学习算法可以用很多方法分类,但一种常见的分类方法是根据算法是监督学习、无监督学习还是半监督学习。
监督学习算法在标记数据上训练,其中训练集中的每个例子都提供了正确的输出。监督学习的目标是通过在训练数据中找到模式来对新的、未见过的例子进行预测。监督学习的常见应用包括图像分类、语音识别和自然语言处理。
无监督学习算法没有给出任何标记训练示例。相反,它们用于通过将类似的例子分组来找到数据中的模式。聚类和降维是无监督学习的常见类型。
半监督学习算法介于监督学习和无监督学习之间。它们在标记和未标记的例子上进行训练,在标记所有数据费用或时间昂贵时可能很有用。
监督学习算法是在标记数据上训练的,其中训练集中的每个例子都提供了正确的输出。有许多不同类型的监督学习算法,包括:
-
线性回归:该算法用于预测连续值,例如给定房屋的特征(例如卧室数量、平方英尺数)的房屋价格。
-
逻辑回归:该算法用于预测二进制结果,例如客户是否会流失。
-
决策树:该算法用于基于一系列决策进行预测,每个决策都由树中的分支点表示。
-
支持向量机(SVM):该算法用于在高维空间中找到最大程度分离不同类别的超平面。
-
朴素贝叶斯:该算法基于贝叶斯定理,根据事件发生的可能性进行预测。
-
神经网络:这些算法受到大脑的结构和功能的启发,由多个“神经元”组成,这些神经元处理和传输信息。
无监督学习算法没有给出任何标记训练示例。常见的无监督学习算法包括:
-
聚类:该算法用于将数据分成若干组(称为簇),使得簇内的数据点相似性较大,而簇间的数据点相似性较小。
-
降维:该算法用于将数据映射到较低维度的空间中,以便更容易可视化或分析。常用的降维方法包括主成分分析(PCA)和线性判别分析(LDA)。
-
异常检测:该算法用于在数据中寻找异常值,例如网络流量中的攻击行为或医疗数据中的异常健康指标。
-
关联规则学习:该算法用于发现数据中的频繁项集并挖掘隐藏的关联规则,例如在购物篮数据中发现哪些商品常常一起购买。
尝试要求chatGPT给出一些入门机器学习的简单案例,结果如下。
1. 线性回归的例子:从简单到复杂
线性回归简单例子
-
from sklearn.linear_model import LinearRegression
-
-
# training data
-
X = [[1, 2], [2, 4], [3, 6], [4, 8]]
-
y = [3, 5, 7, 9]
-
-
# create and fit the model
-
model = LinearRegression()
-
(X, y)
-
-
# make predictions
-
predictions = ([[5, 10]])
-
print(predictions) # output: [11.]
线性回归的例子:从简单到复杂
-
from sklearn.linear_model import LinearRegression
-
from import PolynomialFeatures
-
import numpy as np
-
-
# training data
-
X = ([[1, 2], [2, 4], [3, 6], [4, 8]])
-
y = ([3, 5, 7, 9])
-
-
# transform the data to include polynomial features
-
poly = PolynomialFeatures(degree=2)
-
X_poly = poly.fit_transform(X)
-
-
# create and fit the model
-
model = LinearRegression()
-
(X_poly, y)
-
-
# make predictions
-
predictions = (([[5, 10]]))
-
print(predictions) # output: [13.5]
在第一个例子中,线性回归用于根据输入特征与目标之间的线性关系来预测连续值(目标)。模型在标记的示例数据集上训练,其中每个示例由一组输入特征和相应的正确输出(目标)组成。然后使用方程 y = wx + b
在新的例子上进行预测,其中 w
和 b
是模型学习的系数。
在第二个例子中,线性回归用于拟合输入特征与目标之间的非线性关系。为此,输入特征被转换为包含次数最高为特定值的多项式特征(例如,x1^2
、x2^2
、x1*x2
)。然后在这个转换后的数据上训练模型,并像第一个例子中一样使用它来对新的例子进行预测。
在这两个例子中,线性回归的目标是找到最适合训练数据的系数 w
和 b
,以便模型能够对新的例子进行准确预测。
2. 使用随机森林分类器对鸢尾花数据集进行分类
这是一个使用 scikit-learn 库的机器学习示例。它加载了鸢尾花数据集,该数据集用于分类任务。数据集包含 150 个鸢尾花的数据,每个数据有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。每个数据都有一个标签:山鸢尾(0)、变色鸢尾(1)或维吉尼亚鸢尾(2)。
示例代码使用随机森林分类器训练模型。然后使用该模型对新的鸢尾花进行预测。
-
from import RandomForestClassifier
-
from import load_iris
-
-
# Load the iris dataset as an example
-
iris = load_iris()
-
X = iris["data"]
-
Y = iris["target"]
-
-
# Create a random forest classifier
-
clf = RandomForestClassifier()
-
-
# Train the classifier on the iris data
-
(X, Y)
-
-
# Test the classifier on a new example
-
prediction = ([[5.1, 3.5, 1.4, 0.2]])
-
-
# The prediction should be 0, corresponding to the setosa species
-
print(prediction)
关于使用的数据集的属性
-
from import load_iris
-
-
iris = load_iris()
-
X = iris["data"]
-
Y = iris["target"]
-
-
print() # (150, 4)
-
print() # (150,)
-
print(iris["target_names"]) # ['setosa' 'versicolor' 'virginica']
下面这段代码导入了脚本所需的库和模块。RandomForestClassifier
类用于创建随机森林分类器模型。load_iris
函数用于加载鸢尾花数据集。train_test_split
函数用于将数据分成训练数据和测试数据。accuracy_score
函数用于计算模型预测的准确度。
load_iris
函数加载鸢尾花数据集并将其作为字典返回。字典的 data
键包含鸢尾花示例的特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)作为二维数组。字典的 target
键包含鸢尾花示例的标签(品种)作为一维数组。这些值分别存储在变量 X
和 Y
中。
train_test_split
函数用于将数据分成训练数据和测试数据。变量 X
和 Y
分别包含鸢尾花示例的特征和标签。test_size
参数指定用于测试集的数据比例(在这种情况下为 20%)。函数返回四个数组:X_train
和 Y_train
包含训练集中示例的特征和标签,而 X_test
和 Y_test
包含测试集中示例的特征和标签。
这段代码使用 RandomForestClassifier
类创建了一个随机森林分类器对象。n_estimators
参数指定了分类器应使用的决策树数量。
简单来说,这个代码创建了一个使用 100 棵决策树的随机森林分类器。
-
from import RandomForestClassifier
-
from import load_iris
-
from sklearn.model_selection import train_test_split
-
from import accuracy_score
-
-
# Load the iris dataset
-
iris = load_iris()
-
X = iris["data"]
-
Y = iris["target"]
-
-
# Split the data into a training set and a test set
-
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2)
-
-
# Create a random forest classifier
-
clf = RandomForestClassifier(n_estimators=100)
-
-
# Train the classifier using the training data
-
(X_train, Y_train)
-
-
# Make predictions on the test data
-
Y_pred = (X_test)
-
-
# Calculate the accuracy of the predictions
-
accuracy = accuracy_score(Y_test, Y_pred)
-
-
print(f"Test accuracy: {accuracy:.2f}")
这个例子使用了鸢尾花数据集,并使用随机森林分类器模型对其进行分类。它首先导入了所需的库和模块,然后加载了数据集并将其分别存储在 X
和 Y
中。然后,它使用 train_test_split
函数将数据拆分成训练数据和测试数据,并使用 RandomForestClassifier
类创建了一个随机森林分类器模型。最后,它使用训练数据训练模型,并使用测试数据测试模型。它计算并打印出模型的准确度,并在最后一行中对结果进行了断言。
3. 使用支持向量机分类器对乳腺癌数据集进行分类
下面这段代码使用支持向量机 (SVM) 分类器对乳腺癌数据集中的示例进行分类。它遵循与前一个例子类似的过程:加载数据,将其拆分为训练数据和测试数据,在训练数据上训练分类器,并在测试数据上计算模型的准确度。
首先,我们需要导入所需的库和数据集:
-
import pandas as pd
-
from sklearn.model_selection import train_test_split
-
from import SVC
-
from import accuracy_score
-
-
# 加载乳腺癌数据集
-
data = pd.read_csv('breast_cancer.csv')
-
-
# 将数据集分为特征和标签
-
X = ('label', axis=1)
-
y = data['label']
-
-
# 将数据集拆分为训练集和测试集
-
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
接下来,我们可以使用SVC函数创建一个支持向量机分类器,并将其训练到训练集上:
-
# 创建支持向量机分类器
-
classifier = SVC(kernel='linear')
-
-
# 训练分类器
-
(X_train, y_train)
最后,我们可以使用我们的模型对测试数据进行预测,并使用accuracy_score函数来评估模型的准确度:
-
# 在测试集上进行预测
-
y_pred = (X_test)
-
-
# 计算准确度
-
accuracy = accuracy_score(y_test, y_pred)
-
-
print('Accuracy:', accuracy)
这是一个简单的机器学习示例,但它演示了如何使用支持向量机分类器对数据进行训练和测试。如果你想了解更多关于支持向量机分类器的信息,可以继续搜索相关资料。
下面是将上述代码合并在一起的版本:
-
import pandas as pd
-
from sklearn.model_selection import train_test_split
-
from import SVC
-
from import accuracy_score
-
-
# 加载乳腺癌数据集
-
data = pd.read_csv('breast_cancer.csv')
-
-
# 将数据集分为特征和标签
-
X = ('label', axis=1)
-
y = data['label']
-
-
# 将数据集拆分为训练集和测试集
-
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
-
-
# 创建支持向量机分类器
-
classifier = SVC(kernel='linear')
-
-
# 训练分类器
-
(X_train, y_train)
-
-
# 在测试集上进行预测
-
y_pred = (X_test)
-
-
# 计算准确度
-
accuracy = accuracy_score(y_test, y_pred)
-
-
print('Accuracy:', accuracy)
参考资料
/chat