python自带数据的模型合集

鸢尾花----聚类

Python鸢尾花数据集通常用于分类问题,
这些模型都可以通过Python中的Scikit-learn库进行实现。同时,也可以对这些模型进行参数调优以提高模型的准确性。
Logistic Regression(逻辑回归):
逻辑回归是一种二分类模型,它可以用于预测某种物品是否属于某个类别。例如,可以使用逻辑回归来预测鸢尾花是否为Setosa。
Decision Tree(决策树):
决策树是一种基于树结构的分类模型,它可以用于预测某种物品属于哪个类别。例如,可以使用决策树来预测鸢尾花的品种。
Random Forest(随机森林)
随机森林是一种基于决策树的集成学习模型,它可以用于预测某种物品属于哪个类别。例如,可以使用随机森林来预测鸢尾花的品种。
K-Nearest Neighbors(K近邻):
K近邻是一种基于距离的分类模型,它可以用于预测某种物品属于哪个类别。例如,可以使用K近邻来预测鸢尾花的品种。
Support Vector Machine(支持向量机):
支持向量机是一种基于分隔超平面的分类模型,它可以用于预测某种物品属于哪个类别。例如,可以使用支持向量机来预测鸢尾花的品种。
Naive Bayes(朴素贝叶斯):
朴素贝叶斯是一种基于贝叶斯定理的分类模型,它可以用于预测某种物品属于哪个类别。例如,可以使用朴素贝叶斯来预测品种。

写一个总览的各个模型

首先,需要加载鸢尾花数据集:


from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

接着,将数据集拆分为训练集和测试集:


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

然后,我们可以使用以下代码来实现这些模型:



Logistic Regression(逻辑回归):


from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
accuracy = classifier.score(X_test, y_test)
print("Logistic Regression Accuracy:", accuracy)

输出:


Logistic Regression Accuracy: 1.0


Decision Tree(决策树):


from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
accuracy = classifier.score(X_test, y_test)
print("Decision Tree Accuracy:", accuracy)

输出:


Decision Tree Accuracy: 1.0


Random Forest(随机森林):


from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier()
classifier.fit(X_train, y_train)
accuracy = classifier.score(X_test, y_test)
print("Random Forest Accuracy:", accuracy)

输出:


Random Forest Accuracy: 1.0


K-Nearest Neighbors(K近邻):


from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier()
classifier.fit(X_train, y_train)
accuracy = classifier.score(X_test, y_test)
print("K-Nearest Neighbors Accuracy:", accuracy)

输出:


K-Nearest Neighbors Accuracy: 1.0


Support Vector Machine(支持向量机):


```python
from sklearn.svm import SVC
classifier = SVC()
classifier.fit(X_train, y_train)
accuracy = classifier.score(X_test, y_test)
print("Support Vector Machine Accuracy:", accuracy


生成一个python鸢尾花决策树模型,要求进行多次模型拟合并设置种子保留每次结果,进行模型准确率评估并绘制模型准确率的评估图像

# 导入库
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 训练模型并计算准确率
accuracies = []
for i in range(10):
    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=i)
    # 训练决策树模型
    model = DecisionTreeClassifier()
    model.fit(X_train, y_train)
    # 预测测试集并计算准确率
    y_pred = model.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    accuracies.append(acc)
    print(f"Accuracy {i}: {acc}")

# 绘制准确率图像
plt.plot(range(10), accuracies, 'o-')
plt.xlabel('Iteration')
plt.ylabel('Accuracy')
plt.title('Model Accuracy')
plt.show()

这个模型使用了sklearn库中的LinearRegression类,通过train_test_split将数据集分为训练集和测试集,
并使用fit()方法拟合训练集数据。最后使用predict()方法预测测试集,输出模型评价结果,包括系数、截距和R²得分。
系数、截距和R²得分是线性回归模型的评价指标。

系数指的是线性回归模型中每个特征对目标变量的影响程度,即斜率。在上述示例中,输出的model.coef_即为各特征的系数。
截距指的是线性回归模型中的常数项,与特征无关。在上述示例中,输出的model.intercept_即为截距。
R²得分是模型预测结果与实际结果的拟合程度,其取值范围为0到1。
R²得分越接近1,表示模型的预测结果越接近实际结果。
在上述示例中,输出的model.score(X_test, y_test)即为R²得分。

波士顿房价–回归

# 导入所需库
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
data_url = "http://lib.stat.cmu.edu/datasets/boston" #1.2版本boston被从sklearn移除
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
X = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
y = raw_df.values[1::2, 2]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构建线性回归模型
lr = LinearRegression()
# 训练模型
lr.fit(X_train, y_train)
# 预测测试集
y_pred = lr.predict(X_test)

# 计算MSE
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)
# 计算RMSE
rmse = np.sqrt(mse)
print('RMSE:', rmse)
# 计算MAE
mae = mean_absolute_error(y_test, y_pred)
print('MAE:', mae)
# 计算R²
r2 = r2_score(y_test, y_pred)
print('R²:', r2)
# 计算相关系数
corr = np.corrcoef(y_test, y_pred)[0,1]
print('Correlation coefficient:', corr)

# 输出模型评价系数,截距,得分/R²
print('Model Coefficients:', lr.coef_)
print('Model Intercept:', lr.intercept_)
print('Model Score:', lr.score(X_test, y_test))



#输出结果
MSE: 24.29111947497324
RMSE: 4.928602182665308
MAE: 3.1890919658877905: 0.6687594935356358
Correlation coefficient: 0.8274364509309169
Model Coefficients: [-1.13055924e-01  3.01104641e-02  4.03807204e-02  2.78443820e+00
 -1.72026334e+01  4.43883520e+00 -6.29636221e-03 -1.44786537e+00
  2.62429736e-01 -1.06467863e-02 -9.15456240e-01  1.23513347e-02
 -5.08571424e-01]
Model Intercept: 30.24675099392321
Model Score: 0.6687594935356358

对于波士顿房价数据集,具体的好坏评价标准可能因应用场景而有所不同。但是一般来说,我们可以根据以下几点来评价这些指标的好坏程度:

MSE、RMSE和MAE:这些指标的数值越小,表示模型预测效果越好。在这个示例中,MSE为24.291,RMSE为4.929,MAE为3.189,这些数值相对较小,说明模型的预测效果较好。

R²:R²的取值范围在0到1之间,表示模型能够解释目标变量的方差比例,越接近1表示模型的拟合效果越好。在这个示例中,R²为0.669,说明模型能够解释目标变量的约67%的方差,属于一般水平。

相关系数:相关系数的取值范围在-1到1之间,表示变量之间的线性关系强度,越接近1表示线性关系越强。在这个示例中,相关系数为0.820,说明预测值和真实值之间的线性关系较强。

因此,根据以上评价标准,这个示例中的模型表现可以被认为是较好的。

知识点

train_test_split 中参数含义

train_test_split()是sklearn库中用于将数据集分为训练集和测试集的函数,在机器学习中经常使用。它的参数含义如下:

arrays:表示需要划分的数据集,可以是数组、列表或稀疏矩阵等。

test_size:表示测试集的大小,可以是浮点数(表示测试集占总数据集的比例)或整数(表示测试集的样本数量)。默认值为0.25。

train_size:表示训练集的大小,可以是浮点数(表示训练集占总数据集的比例)或整数(表示训练集的样本数量)。默认值为None,即train_size=1-test_size。

random_state:表示随机种子,用于控制随机数生成器的种子。如果使用相同的随机种子,则每次生成的随机数序列都相同。

shuffle:表示是否在划分之前对数据集进行随机排序。默认值为True,即对数据集进行随机排序。

stratify:表示是否根据标签的分布情况对数据集进行分层抽样,以保证训练集和测试集的标签分布相似。默认值为None,即不进行分层抽样。

train_test_split()函数的返回值是一个元组,包含四个变量,分别是训练集数据、测试集数据、训练集标签、测试集标签。

分类模型评价准确率有哪些方法

评价模型准确率是机器学习中非常重要的一步,以下是常见的几种评价模型准确率的方法:

其中,TP为真正例数,TN为真反例数,FP为假正例数,FN为假反例数。

准确率(Accuracy)

准确率(Accuracy)= (TP + TN) / (TP + TN + FP + FN)

精确率(Precision)

精确率(Precision)= TP / (TP + FP)
精确度(Accuracy):精确度是模型对所有样本进行分类的正确率。即正确分类的样本数除以总样本数。在样本分布均匀的情况下,精确度可以作为一个良好的评价指标,但在不平衡的情况下,精确度可能会给出误导性的结果。

召回率(Recall)

召回率(Recall)= TP / (TP + FN)
召回率(Recall):召回率是指模型能够正确识别出正样本的能力。即在所有正样本中,模型正确分类的样本数除以总正样本数。召回率是在样本不平衡的情况下,更好的评价指标。

F1值(F1-score)

F1值(F1-score)= 2 * (Precision * Recall) / (Precision + Recall)
F1值(F1 Score):F1值综合了精确度和召回率的评价指标,是一个综合考虑模型准确率和召回率的评价指标。F1值越大,说明模型的预测结果越好。F1值等于2精确度召回率 / (精确度 + 召回率)。

ROC曲线和AUC值:

首先,需要将预测值按照从大到小的顺序排列,然后以不同的阈值为基准,计算对应的假正率和真正率,并绘制ROC曲线。AUC值是ROC曲线下的面积,可以使用Python的sklearn库中的roc_auc_score函数计算。
ROC曲线:ROC曲线是根据不同的阈值绘制的分类器的性能曲线。ROC曲线的横轴是假阳性率(False Positive Rate),纵轴是真阳性率(True Positive Rate)。ROC曲线越接近左上角,说明分类器性能越好。
AUC值:AUC(Area Under Curve)是ROC曲线下的面积。AUC值越大,说明模型性能越好。

混淆矩阵(Confusion Matrix):

                 预测正例	预测反例
           实际正例	TP	       FN
           实际反例	FP	       TN

回归模型评价准确率有哪些方法

均方误差(MSE)

均方误差(MSE):用于衡量回归模型预测值与真实值之间的平均差异。
将每个预测值与其对应的真实值之差平方后,求其平均值。公式为:MSE = (1/n) * Σ(yi - ŷi)²

均方根误差(RMSE)

均方根误差(RMSE):是MSE的平方根。它更加直观,因为它与原始数据的单位相同。
将MSE的结果开方即可,公式为:RMSE = √(MSE)

平均绝对误差(MAE)

平均绝对误差(MAE):用于衡量回归模型预测值与真实值之间的平均绝对差异。
将每个预测值与其对应的真实值之差取绝对值后求其平均值。公式为:MAE = (1/n) * Σ|yi - ŷi|

R平方(R2)

R平方(R2):用于衡量模型对观测值的拟合程度。它表示模型解释了多少方差,并将其与总方差进行比较。
用于衡量模型对观测值的拟合程度。公式为:R² = 1 - (SSres/SStot) ,其中SSres为残差平方和,SStot为总平方和。

平均绝对百分误差(MAPE)

平均绝对百分误差(MAPE):用于衡量预测值与真实值之间的平均百分数误差。它通常用于比较不同模型的预测能力。
将每个预测值与其对应的真实值之差除以真实值后取绝对值,再求其平均值,最后将结果乘以100。公式为:MAPE = (1/n) * Σ(|(yi - ŷi)/yi|) * 100%

对数损失(Log Loss)

对数损失(Log Loss):用于衡量二元分类器的性能。它将分类器预测的概率与真实标签之间的差异进行比较。
公式为:- (1/n) * Σ(ylog(ŷ) + (1-y)log(1-ŷ)),其中y为真实标签(0或1),ŷ为模型预测的概率值。

指数损失(Exponential Loss)

指数损失(Exponential Loss):用于衡量多元分类器的性能。它将分类器预测的概率与真实标签之间的差异进行比较。
公式为:- (1/n) * Σexp(-yi * ŷi),其中yi为真实标签(1或-1),ŷ为模型预测的概率值。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值