【学习笔记】利用chatGPT入门机器学习(附代码)

1. 线性回归的例子:从简单到复杂

2. 使用随机森林分类器对鸢尾花数据集进行分类

3. 使用支持向量机分类器对乳腺癌数据集进行分类

机器学习算法可以用很多方法分类,但一种常见的分类方法是根据算法是监督学习、无监督学习还是半监督学习。

监督学习算法在标记数据上训练,其中训练集中的每个例子都提供了正确的输出。监督学习的目标是通过在训练数据中找到模式来对新的、未见过的例子进行预测。监督学习的常见应用包括图像分类、语音识别和自然语言处理。

无监督学习算法没有给出任何标记训练示例。相反,它们用于通过将类似的例子分组来找到数据中的模式。聚类和降维是无监督学习的常见类型。

半监督学习算法介于监督学习和无监督学习之间。它们在标记和未标记的例子上进行训练,在标记所有数据费用或时间昂贵时可能很有用。

监督学习算法是在标记数据上训练的,其中训练集中的每个例子都提供了正确的输出。有许多不同类型的监督学习算法,包括:

  1. 线性回归:该算法用于预测连续值,例如给定房屋的特征(例如卧室数量、平方英尺数)的房屋价格。

  2. 逻辑回归:该算法用于预测二进制结果,例如客户是否会流失。

  3. 决策树:该算法用于基于一系列决策进行预测,每个决策都由树中的分支点表示。

  4. 支持向量机(SVM):该算法用于在高维空间中找到最大程度分离不同类别的超平面。

  5. 朴素贝叶斯:该算法基于贝叶斯定理,根据事件发生的可能性进行预测。

  6. 神经网络:这些算法受到大脑的结构和功能的启发,由多个“神经元”组成,这些神经元处理和传输信息。

无监督学习算法没有给出任何标记训练示例。常见的无监督学习算法包括:

  1. 聚类:该算法用于将数据分成若干组(称为簇),使得簇内的数据点相似性较大,而簇间的数据点相似性较小。

  2. 降维:该算法用于将数据映射到较低维度的空间中,以便更容易可视化或分析。常用的降维方法包括主成分分析(PCA)和线性判别分析(LDA)。

  3. 异常检测:该算法用于在数据中寻找异常值,例如网络流量中的攻击行为或医疗数据中的异常健康指标。

  4. 关联规则学习:该算法用于发现数据中的频繁项集并挖掘隐藏的关联规则,例如在购物篮数据中发现哪些商品常常一起购买。

尝试要求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()
model.fit(X, y)# make predictions
predictions = model.predict([[5, 10]])
print(predictions)  # output: [11.]

线性回归的例子:从简单到复杂

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import numpy as np# training data
X = np.array([[1, 2], [2, 4], [3, 6], [4, 8]])
y = np.array([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()
model.fit(X_poly, y)# make predictions
predictions = model.predict(poly.transform([[5, 10]]))
print(predictions)  # output: [13.5]

在第一个例子中,线性回归用于根据输入特征与目标之间的线性关系来预测连续值(目标)。模型在标记的示例数据集上训练,其中每个示例由一组输入特征和相应的正确输出(目标)组成。然后使用方程 y = wx + b 在新的例子上进行预测,其中 wb 是模型学习的系数。

在第二个例子中,线性回归用于拟合输入特征与目标之间的非线性关系。为此,输入特征被转换为包含次数最高为特定值的多项式特征(例如,x1^2x2^2x1*x2)。然后在这个转换后的数据上训练模型,并像第一个例子中一样使用它来对新的例子进行预测。

在这两个例子中,线性回归的目标是找到最适合训练数据的系数 wb,以便模型能够对新的例子进行准确预测。

2. 使用随机森林分类器对鸢尾花数据集进行分类

这是一个使用 scikit-learn 库的机器学习示例。它加载了鸢尾花数据集,该数据集用于分类任务。数据集包含 150 个鸢尾花的数据,每个数据有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。每个数据都有一个标签:山鸢尾(0)、变色鸢尾(1)或维吉尼亚鸢尾(2)。

示例代码使用随机森林分类器训练模型。然后使用该模型对新的鸢尾花进行预测。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets 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
clf.fit(X, Y)# Test the classifier on a new example
prediction = clf.predict([[5.1, 3.5, 1.4, 0.2]])# The prediction should be 0, corresponding to the setosa species
print(prediction)

关于使用的数据集的属性

from sklearn.datasets import load_irisiris = load_iris()
X = iris["data"]
Y = iris["target"]print(X.shape)  # (150, 4)
print(Y.shape)  # (150,)
print(iris["target_names"])  # ['setosa' 'versicolor' 'virginica']

下面这段代码导入了脚本所需的库和模块。RandomForestClassifier 类用于创建随机森林分类器模型。load_iris 函数用于加载鸢尾花数据集。train_test_split 函数用于将数据分成训练数据和测试数据。accuracy_score 函数用于计算模型预测的准确度。

load_iris 函数加载鸢尾花数据集并将其作为字典返回。字典的 data 键包含鸢尾花示例的特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)作为二维数组。字典的 target 键包含鸢尾花示例的标签(品种)作为一维数组。这些值分别存储在变量 XY 中。

train_test_split 函数用于将数据分成训练数据和测试数据。变量 XY 分别包含鸢尾花示例的特征和标签。test_size 参数指定用于测试集的数据比例(在这种情况下为 20%)。函数返回四个数组:X_trainY_train 包含训练集中示例的特征和标签,而 X_testY_test 包含测试集中示例的特征和标签。

这段代码使用 RandomForestClassifier 类创建了一个随机森林分类器对象。n_estimators 参数指定了分类器应使用的决策树数量。

简单来说,这个代码创建了一个使用 100 棵决策树的随机森林分类器。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics 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
clf.fit(X_train, Y_train)# Make predictions on the test data
Y_pred = clf.predict(X_test)# Calculate the accuracy of the predictions
accuracy = accuracy_score(Y_test, Y_pred)print(f"Test accuracy: {accuracy:.2f}")

这个例子使用了鸢尾花数据集,并使用随机森林分类器模型对其进行分类。它首先导入了所需的库和模块,然后加载了数据集并将其分别存储在 XY 中。然后,它使用 train_test_split 函数将数据拆分成训练数据和测试数据,并使用 RandomForestClassifier 类创建了一个随机森林分类器模型。最后,它使用训练数据训练模型,并使用测试数据测试模型。它计算并打印出模型的准确度,并在最后一行中对结果进行了断言。

3. 使用支持向量机分类器对乳腺癌数据集进行分类

下面这段代码使用支持向量机 (SVM) 分类器对乳腺癌数据集中的示例进行分类。它遵循与前一个例子类似的过程:加载数据,将其拆分为训练数据和测试数据,在训练数据上训练分类器,并在测试数据上计算模型的准确度。

首先,我们需要导入所需的库和数据集:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载乳腺癌数据集
data = pd.read_csv('breast_cancer.csv')# 将数据集分为特征和标签
X = data.drop('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')# 训练分类器
classifier.fit(X_train, y_train)

最后,我们可以使用我们的模型对测试数据进行预测,并使用accuracy_score函数来评估模型的准确度:

# 在测试集上进行预测
y_pred = classifier.predict(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 sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载乳腺癌数据集
data = pd.read_csv('breast_cancer.csv')# 将数据集分为特征和标签
X = data.drop('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')# 训练分类器
classifier.fit(X_train, y_train)# 在测试集上进行预测
y_pred = classifier.predict(X_test)# 计算准确度
accuracy = accuracy_score(y_test, y_pred)print('Accuracy:', accuracy)

参考资料

https://chat.openai.com/chat

本文链接:https://my.lmcjl.com/post/8901.html

展开阅读全文

4 评论

留下您的评论.