Python数据分析之使用scikit-learn构建模型

当谈到Python数据分析的时候,必定会提到scikit-learn这个非常常用的Python第三方库。scikit-learn提供了许多机器学习算法,并且这些算法都经过了优化,从而使得Python的数据分析和数据挖掘更加容易和高效。本文将讲解如何使用scikit-learn来构建机器学习模型,包括以下内容:

  1. 安装scikit-learn和必要的依赖库
  2. 数据准备
  3. 特征工程
  4. 数据集的划分
  5. 模型的训练与预测
  6. 模型性能的评估

1. 安装scikit-learn和必要的依赖库

scikit-learn可以使用pip包管理器进行安装。安装前请确保你的pip版本为最新版本。要安装最新版本的pip,请在终端/控制台上执行以下命令:

python -m pip install --upgrade pip

然后,可以通过以下命令安装scikit-learn:

pip install -U scikit-learn

2. 数据准备

在这里,我们使用一个开源数据集,该数据集是关于朝鲜核试验的情报报告和地震数据。该数据集存储在一个csv文件中,可以使用Pandas库加载。以下是读取数据集的代码:

import pandas as pd 

data = pd.read_csv('dataset.csv')

3. 特征工程

在训练模型之前,必须对数据进行预处理和特征工程。以下是在这个数据集上应用常见的特征工程技术:

# 移除无关的列
data.drop(['Date', 'Time', 'Latitude', 'Longitude'], axis=1, inplace=True)

# 将类别型变量变为数值型变量
data = pd.get_dummies(data, columns=['DepthCategory', 'MagnitudeCategory'])

# 特征缩放
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data[['Depth', 'Magnitude']] = scaler.fit_transform(data[['Depth', 'Magnitude']])

4. 数据集的划分

在训练模型时,很重要的一步就是将原始数据集划分成训练集和测试集,以衡量模型的性能。以下是将数据集划分为训练集和测试集的代码:

from sklearn.model_selection import train_test_split

X = data.drop(['Type'], axis=1)
y = data['Type']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

5. 模型的训练与预测

我们选择逻辑回归模型来对数据进行分类。在这里,我们将实例化一个逻辑回归分类器,并使用训练集对它进行训练,然后使用该模型对测试集进行预测。以下是这个过程的代码:

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression()
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

6. 模型性能的评估

在模型训练和预测之后,我们需要对该模型的性能进行评估。以下是评估逻辑回归模型性能的代码:

from sklearn.metrics import accuracy_score, f1_score, confusion_matrix, classification_report

print("Accuracy:", accuracy_score(y_test, y_pred))
print("F1 score:", f1_score(y_test, y_pred, average='weighted'))
print("Confusion matrix:\n", confusion_matrix(y_test, y_pred))
print("Classification report:\n", classification_report(y_test, y_pred))

在这里,我们使用了许多常用的性能指标,包括准确率、F1分数、混淆矩阵和分类报告。这些指标可以帮助我们了解模型在预测方面的表现如何。

示例1:使用scikit-learn构建线性回归模型

以下是使用scikit-learn构建线性回归模型的示例代码:

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 生成数据
np.random.seed(0)
n_samples = 1000
X = np.random.normal(size=n_samples)
y = 1.5 * X + np.random.normal(size=n_samples, scale=0.5)

# 将数据划分为训练集和测试集,其中训练集占80%,测试集占20%
X_train, X_test, y_train, y_test = train_test_split(X.reshape(-1, 1), y, test_size=0.2)

# 实例化并训练线性回归模型
lr = LinearRegression()
lr.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = lr.predict(X_test)

# 输出模型性能
print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
print('Variance score: %.2f' % r2_score(y_test, y_pred))

该示例创建了一个线性数据集,并将其划分为训练集和测试集。然后,将一个线性回归模型用于训练数据,并使用该模型对测试数据进行预测。最后,将输出用于评估模型的性能指标。

示例2:使用scikit-learn构建决策树模型

以下是使用scikit-learn构建决策树模型的示例代码:

from sklearn.tree import DecisionTreeRegressor

# 生成数据
X = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(X)

# 将数据划分为训练集和测试集,其中训练集占80%,测试集占20%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 实例化并训练决策树模型
tree = DecisionTreeRegressor(max_depth=3)
tree.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = tree.predict(X_test)

# 输出模型性能
print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
print('Variance score: %.2f' % r2_score(y_test, y_pred))

该示例创建了一个类似于正弦函数的数据集,并将其划分为训练集和测试集。然后实例化并训练了一个决策树模型,并使用该模型进行预测。最后,输出用于评估模型的性能指标。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据分析之使用scikit-learn构建模型 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 云原生2.0网关API标准发展趋势

    摘要:Gateway API希望取代Ingress API。 本文分享自华为云社区《云原生2.0网关API标准发展趋势》,作者:华为云云原生团队 。 云原生网关API标准背景及发展现状 Gateway API是一个开源的API标准,源自Kubernetes SIG-NETWORK兴趣组。从出身角度讲,可谓根正苗红,自从开源以来备受关注,被寄予厚望。Gatew…

    云计算 2023年4月20日
    00
  • 使用python爬取taptap网站游戏截图的步骤

    下面我来为您介绍使用Python爬取Taptap网站游戏截图的步骤: 步骤一:准备工作 首先,我们需要准备Python环境以及所需的第三方库,比如 requests,beautifulsoup4 等等。 其中 requests 库用于发送 HTTP 请求,beautifulsoup4 用于解析 HTML 页面。 可以使用 pip 命令来安装这些库: pip …

    云计算 2023年5月17日
    00
  • 云计算和数据 关于Windows Azure Table Storage 和 SQL Azure的选择

    这篇博客对在云计算解决方案中操作数据进行总览性的介绍。   概览 对于绝大多数解决方案而言,数据都是至关重要的一部分。在云计算里面,绝大多数现成的建议都可以直接拿来用。但是云计算也有其独特之处。这篇博客将讨论以下两个用例: 将你存放在云中的数据发布至全世界 在云端的项目中使用你本地的数据。   通用的建议 无论是哪种用例,这些建议都是通用的。   选择一个拓…

    2023年4月10日
    00
  • 如何用python开发Zeroc Ice应用

    如何用Python开发Zeroc Ice应用 Zeroc Ice是一种高效、灵活、跨平台的RPC框架,支持多种编程语言。在这里,我们将讨论如何使用Python语言开发Zeroc Ice应用程序的方法。 安装Zeroc Ice 在开始编写Python应用程序之前,您需要先安装Zeroc Ice软件包。您可以在Zeroc官网下载最新版本的Ice软件包进行安装。 …

    云计算 2023年5月17日
    00
  • 基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览 )

    下面是关于“基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览)”的完整攻略,包含两个示例说明。 简介 在ASP.NET应用程序中,可以使用easyUI框架实现图片上传功能。本文将详细讲解如何使用ASP.NET和easyUI框架实现图片上传功能,并在上传过程中判断图片格式和实现即时浏览。 步骤 以下是使用ASP.NET和easyUI框架…

    云计算 2023年5月16日
    00
  • 资深架构师用通俗易懂的语言告诉你什么是云计算

      什么是云计算 “云计算”这三个字相信你一定听过无数遍了,那么“云计算”到底是什么?当我们听到云计算三个字时,感觉非常高大上,高不可测。丈二和尚摸不着头脑。今天我们用通俗易懂的语言来说说什么是云计算。 我们通过这三个问题来了解云计算。 咱们先从四次工业革命开始说起:     第一次工业革命是以蒸汽机的发明为开始,人类从此进入蒸汽时代; 第二次工业革命是以电…

    云计算 2023年4月13日
    00
  • 云计算碰撞创业支持,如何惠及创业者?

    在云计算诞生到如今的十余年的发展中,云计算以指数级速度增长并逐渐渗透到我们生活的各个方面。云计算是当今信息化技术的新兴的计算模式和概念,它既是一种技术模式,也是一种商业模式。云计算是各大IT商家所追求的技术路线和服务模式。 云计算行业的高速发展,也为各行各业带去了基于信息技术变革时代下的新机会和新市场,并且正在成为社会发展进步的基础设施。与此同时,云计算市场…

    云计算 2023年4月12日
    00
  • 《伟大的计算原理》一云计算

    摘要: 本节书摘来华章计算机《伟大的计算原理》一书中的第2章 ,[美]彼得 J. 丹宁(Peter J. Denning) 克雷格 H. 马特尔(Craig H. Martell)著 罗英伟 高良才 张 伟 熊瑞勤 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 本节书摘来华章计算机《伟大的计算原理》一书中的第2章 ,[美]彼得 J. 丹宁(Pe…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部