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

时间:2024-10-26 07:38:12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

尝试要求chatGPT给出一些入门机器学习的简单案例,结果如下。

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

线性回归简单例子

  1. from sklearn.linear_model import LinearRegression
  2. # training data
  3. X = [[1, 2], [2, 4], [3, 6], [4, 8]]
  4. y = [3, 5, 7, 9]
  5. # create and fit the model
  6. model = LinearRegression()
  7. (X, y)
  8. # make predictions
  9. predictions = ([[5, 10]])
  10. print(predictions) # output: [11.]

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

  1. from sklearn.linear_model import LinearRegression
  2. from import PolynomialFeatures
  3. import numpy as np
  4. # training data
  5. X = ([[1, 2], [2, 4], [3, 6], [4, 8]])
  6. y = ([3, 5, 7, 9])
  7. # transform the data to include polynomial features
  8. poly = PolynomialFeatures(degree=2)
  9. X_poly = poly.fit_transform(X)
  10. # create and fit the model
  11. model = LinearRegression()
  12. (X_poly, y)
  13. # make predictions
  14. predictions = (([[5, 10]]))
  15. print(predictions) # output: [13.5]

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

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

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

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

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

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

  1. from import RandomForestClassifier
  2. from import load_iris
  3. # Load the iris dataset as an example
  4. iris = load_iris()
  5. X = iris["data"]
  6. Y = iris["target"]
  7. # Create a random forest classifier
  8. clf = RandomForestClassifier()
  9. # Train the classifier on the iris data
  10. (X, Y)
  11. # Test the classifier on a new example
  12. prediction = ([[5.1, 3.5, 1.4, 0.2]])
  13. # The prediction should be 0, corresponding to the setosa species
  14. print(prediction)

关于使用的数据集的属性

  1. from import load_iris
  2. iris = load_iris()
  3. X = iris["data"]
  4. Y = iris["target"]
  5. print() # (150, 4)
  6. print() # (150,)
  7. 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 棵决策树的随机森林分类器。

  1. from import RandomForestClassifier
  2. from import load_iris
  3. from sklearn.model_selection import train_test_split
  4. from import accuracy_score
  5. # Load the iris dataset
  6. iris = load_iris()
  7. X = iris["data"]
  8. Y = iris["target"]
  9. # Split the data into a training set and a test set
  10. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2)
  11. # Create a random forest classifier
  12. clf = RandomForestClassifier(n_estimators=100)
  13. # Train the classifier using the training data
  14. (X_train, Y_train)
  15. # Make predictions on the test data
  16. Y_pred = (X_test)
  17. # Calculate the accuracy of the predictions
  18. accuracy = accuracy_score(Y_test, Y_pred)
  19. print(f"Test accuracy: {accuracy:.2f}")

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

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

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

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

  1. import pandas as pd
  2. from sklearn.model_selection import train_test_split
  3. from import SVC
  4. from import accuracy_score
  5. # 加载乳腺癌数据集
  6. data = pd.read_csv('breast_cancer.csv')
  7. # 将数据集分为特征和标签
  8. X = ('label', axis=1)
  9. y = data['label']
  10. # 将数据集拆分为训练集和测试集
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接下来,我们可以使用SVC函数创建一个支持向量机分类器,并将其训练到训练集上:

  1. # 创建支持向量机分类器
  2. classifier = SVC(kernel='linear')
  3. # 训练分类器
  4. (X_train, y_train)

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

  1. # 在测试集上进行预测
  2. y_pred = (X_test)
  3. # 计算准确度
  4. accuracy = accuracy_score(y_test, y_pred)
  5. print('Accuracy:', accuracy)

这是一个简单的机器学习示例,但它演示了如何使用支持向量机分类器对数据进行训练和测试。如果你想了解更多关于支持向量机分类器的信息,可以继续搜索相关资料。

下面是将上述代码合并在一起的版本:

  1. import pandas as pd
  2. from sklearn.model_selection import train_test_split
  3. from import SVC
  4. from import accuracy_score
  5. # 加载乳腺癌数据集
  6. data = pd.read_csv('breast_cancer.csv')
  7. # 将数据集分为特征和标签
  8. X = ('label', axis=1)
  9. y = data['label']
  10. # 将数据集拆分为训练集和测试集
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  12. # 创建支持向量机分类器
  13. classifier = SVC(kernel='linear')
  14. # 训练分类器
  15. (X_train, y_train)
  16. # 在测试集上进行预测
  17. y_pred = (X_test)
  18. # 计算准确度
  19. accuracy = accuracy_score(y_test, y_pred)
  20. print('Accuracy:', accuracy)

参考资料

/chat