机器学习--判别式模型与生成式模型
机器学习中的模型可以分为判别式模型和生成式模型。判别式模型是指接对输入分类或回归,而生成式模型是先对输入进行建模,再进行分类或回归。本文将提供一份关于判别式模型和生成式模型的完整攻略,包括它们的定义、区别、优缺点以及示例代码。
判别式模型
判别式模型是指直接对输入进行分类或回归的模型。它们通过学习输入和输出之间映关系来进行预测。常见的判别式模型包括逻辑回归、支持向量机、决策树等。
优点
- 训练速度快
- 预测速度快
- 可以直接对进行或回归
缺点
- 不能生成新的数据
- 对于噪声和缺失数据敏感
示例1:逻辑回归
以下是一个使用逻辑回归进行二分类的示例代码:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
X = iris.data[:, :2]
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test=0.2, random_state=42)
# 训练模型
clf = LogisticRegression(random_state=42)
clf.fit(X_train, y_train)
# 预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = clf.score(X_test, y_test)
print("Accuracy:", accuracy)
在上面的代码中,我们使用逻辑回归模型对鸢尾花数据集进行二分类,并计算了模型的准确率。
生成式型
生成式模是指先对输入进行建模,再进行分类或回归的模型。它们学习输入和输出之间的联合率分布来进行预测。常见的生成式模型包括朴素贝叶斯、高斯混合模型等。
优点
- 可以生成新的数据
- 对于噪声和缺失数据具有鲁棒性
缺点
- 训练速度慢
- 预测速度慢
- 对于高维数据,需要大量的训数据
示例2:朴素贝叶斯
以下是一个使用朴素贝叶斯进行文本分类的示例代码:
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
# 加载数据集
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories)
newsgroups_test = fetch_20newsgroups(subset='test', categories=categories)
# 构建朴素贝叶斯分类器
text_clf = Pipeline([
('vect', CountVectorizer()),
('clf', MultinomialNB()),
])
# 训练模型
text_clf.fit(newsgroups_train.data, newsgroups_train.target)
# 预测
predicted = text_clf.predict(newsgroups_test.data)
# 计算准确率
accuracy = accuracy_score(newsgroups_test.target, predicted)
print("Accuracy:", accuracy)
在上面的代码中,我们使用朴素贝叶斯模型对20个新闻组数据集进行文本分类,并计算了模型的准确率。
总结
判别式模型和生成式模型是机器学习中常见的两种模型。判别式模型直接对输入进行分类或回归,训练速度快,但不能生成新的数据。生成式模型先对输入进行建模,再进行分类或回归,可以生成新的数据,但训练速度慢。在本文中,提供了一份关于判别式模型和生成式模型的完整攻略,包括它们的定义、区别、优缺点及示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:机器学习–判别式模型与生成式模型 - Python技术站