首页 > 编程语言 >Python的秘密基地--[章节8] Python 数据科学与机器学习

Python的秘密基地--[章节8] Python 数据科学与机器学习

时间:2024-12-28 17:55:17浏览次数:3  
标签:章节 df Python print -- np import model 数据

第8章:Python 数据科学与机器学习

随着大数据和人工智能的飞速发展,Python 已成为数据科学和机器学习领域的首选编程语言。本章将深入探讨 Python 在数据科学和机器学习中的核心工具和技术,包括数据处理、可视化以及机器学习模型的构建。


8.1 数据科学简介

8.1.1 什么是数据科学?

数据科学(Data Science) 是一种结合统计学、数据分析和机器学习的学科,旨在从数据中提取有价值的信息和知识。

数据科学的关键步骤:

  1. 数据收集:从各种渠道获取数据(传感器、日志、API等)。
  2. 数据清洗:处理缺失值、异常值等问题。
  3. 数据分析:使用统计学和机器学习技术分析数据。
  4. 数据可视化:用图表展示数据分析结果。
  5. 模型构建:使用机器学习算法构建预测模型。
  6. 模型评估与优化:评估模型性能,进行优化。

8.2 Python 数据科学工具

8.2.1 NumPy:数值计算库

NumPy 是 Python 的科学计算库,支持多维数组(ndarray)和各种数学运算。

示例:NumPy 基础操作

import numpy as np

# 创建数组
a = np.array([1, 2, 3, 4])
print(a)

# 数组运算
print(a + 1)
print(a * 2)

# 多维数组
b = np.array([[1, 2], [3, 4]])
print(np.sum(b, axis=0))  # 按列求和

8.2.2 Pandas:数据处理库

Pandas 提供了强大的数据结构,如 SeriesDataFrame,用于数据的存储、清洗和分析。

示例:Pandas 数据分析

import pandas as pd

# 创建 DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)

# 数据操作
print(df['Age'].mean())  # 计算平均年龄
print(df[df['Age'] > 25])  # 筛选年龄大于25的行

8.2.3 Matplotlib & Seaborn:数据可视化

  • Matplotlib:基础绘图库,提供高度自定义的图表。
  • Seaborn:基于 Matplotlib,提供美观的统计图表。

示例:绘制折线图

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, marker='o')
plt.title("Simple Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

示例:Seaborn 热力图

import seaborn as sns
import numpy as np

data = np.random.rand(5, 5)
sns.heatmap(data, annot=True)
plt.show()

8.3 数据预处理

8.3.1 缺失值处理

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [4, np.nan, 6]
})

# 填充缺失值
df.fillna(0, inplace=True)
print(df)

8.3.2 特征缩放

特征缩放使数据保持在相同的尺度范围内。

from sklearn.preprocessing import StandardScaler
import numpy as np

data = np.array([[1, 2], [3, 4], [5, 6]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data)

8.4 机器学习简介

8.4.1 什么是机器学习?

机器学习(Machine Learning) 是一种通过算法从数据中学习经验,并使用经验进行预测或决策的技术。

机器学习的主要类型:

  1. 监督学习(Supervised Learning):有标签数据进行训练(回归、分类)。
  2. 无监督学习(Unsupervised Learning):无标签数据进行训练(聚类)。
  3. 强化学习(Reinforcement Learning):通过奖励和惩罚学习最优策略。

8.5 使用 scikit-learn 进行机器学习

scikit-learn 是 Python 中最流行的机器学习库,提供了丰富的算法和工具。

8.5.1 线性回归

from sklearn.linear_model import LinearRegression
import numpy as np

# 数据准备
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 6])

# 模型训练
model = LinearRegression()
model.fit(X, y)

# 预测
print(model.predict([[4]]))  # 预测结果: [8]

8.5.2 逻辑回归

from sklearn.linear_model import LogisticRegression

# 数据准备
X = np.array([[1], [2], [3], [4]])
y = np.array([0, 0, 1, 1])

# 模型训练
model = LogisticRegression()
model.fit(X, y)

# 预测
print(model.predict([[2.5]]))  # 预测类别

8.5.3 K-Means 聚类

from sklearn.cluster import KMeans

data = np.array([[1, 2], [1, 4], [1, 0],
                 [10, 2], [10, 4], [10, 0]])

kmeans = KMeans(n_clusters=2)
kmeans.fit(data)

print(kmeans.labels_)

8.6 实战项目:房价预测

步骤1:导入库

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 加载数据
df = pd.read_csv('house_prices.csv')
X = df[['Size', 'Rooms']]
y = df['Price']

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)
print(predictions)

8.7 小结

在本章中,我们学习了:

  1. NumPy:数值计算
  2. Pandas:数据处理
  3. Matplotlib/Seaborn:数据可视化
  4. scikit-learn:机器学习模型构建

标签:章节,df,Python,print,--,np,import,model,数据
From: https://blog.csdn.net/Hellc007/article/details/144792699

相关文章

  • 学习012-02-03-14 How to: Reorder an Action Container‘s Actions Collection(如何:对
    Howto:ReorderanActionContainer’sActionsCollection(如何:对操作容器的操作集合进行重新排序)InanXAFapplicationUI,ActionsarelocatedwithinActionContainers.YoucanusetheActionBase.CategorypropertyandtheApplicationModel’sActionDesign......
  • 宋词300首获取
    宋词三百首获取近来一段时间无聊,突然被古诗词吸引,之后就有了后续的一系列操作作为计算机专业,对于批量获取内容肯定首选......
  • 416_前端工程化精讲
    416_前端工程化精讲//合并文档dsscript4357||已发布||开篇词|建立上帝视角,全面系统掌握前端效率工程化||d6b0ec03a4374536a361909923c61bee从事前端开发十余年曾先后在多家大型互联网公司从事前端架构工作讲师:李思嘉贝壳找房前端架构组任资深工程师,专注于前......
  • WPF DrawingImage DrawingGroup Geometry in 2D acted as 3D
    <Windowx:Class="WpfApp102.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • STL中list常用操作
    1、什么是list容器list是一个双向链表容器,可以在任意位置快速插入或删除元素,但是随机访问元素的速度较慢。list不可以随机访问,只能通过迭代器访问。所以不支持.at()和[]操作符。it++//right;it+5;//error2、头部和尾部操作//获取链表第一个结点intx=l1.f......
  • 再战博客园美化(七)
    上回说到。。。我的博客总算有了一个亮色一个暗色主题可以切换了里面也有一个forFlow?找不到文章列表,没有进行替换。也行吧,以后再修,先埋雷先,反正我不是专业前端。(能跑不动原则)今天玩——背景图!欧,不,丑死了。白天黑夜的图片需要不同卡片半透明磨砂标头、页码按钮问......
  • UNI 多端文件下载实现方案
    ​#Uniapp#​#HTML5+#​当前方案支持的平台如下:H5微信小程序APPAndroidIOS代码方案<ss-downloadref="ssdownload":suffix="suffix"/>//下载控件ref对象constssdownload=ref(null)//文件类型枚举constfileTypeEnum={img:1,file:2,......
  • Java难绷知识01——IO流的对象流
    Java难绷知识01之对象流本篇文章会探讨一些JavaIO流中比较容易被忽视的对象流,而且会相对的探讨其中的一些细节其中对于对象流的操作讲解会少一些,主要讨论的是一些细节在JavaIO流中,对象流(ObjectInputStream对象输入流和ObjectOutputStream对象输出流)用于将对象进行序列化和......
  • 题目集7-8总结
    前言题目集的知识点、题量、难度1.知识点总结:类的定义与实例化:概念:定义类的属性和方法,创建对象示例:publicclassDevice{privateStringid;}应用:定义各种电气设备类并创建实例继承关系:概念:子类继承父类特征示例:classSwitchextendsDevice应用:所有具体设备......
  • 完善注册
    点击注册弹出对话框,显示注册信息,有提交创建账号按钮<%--注册--%><divclass="modal"id="signup"><divclass="modal-dialog"><header><divclass="hm_nav"><h3class="hm_nav......