3-4 数据变换

2023-11-12

3.4 数据变换

请参考《数据准备和特征工程》中的相关章节,调试如下代码。


基础知识

import pandas as pd

data = pd.read_csv("/home/aistudio/data/data20514/freefall.csv", index_col=0)
data.describe()
time location
count 100.000000 1.000000e+02
mean 250.000000 4.103956e+05
std 146.522832 3.709840e+05
min 0.000000 0.000000e+00
25% 124.997500 7.658593e+04
50% 250.000000 3.062812e+05
75% 375.002500 6.890859e+05
max 500.000000 1.225000e+06
# !mkdir /home/aistudio/external-libraries
# !pip install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn -t /home/aistudio/external-libraries
import sys
sys.path.append('/home/aistudio/external-libraries')
%matplotlib inline
import seaborn as sns

# scatterplot绘制散点图
ax = sns.scatterplot(x='time', y='location', data=data)

import numpy as np

data.drop([0], inplace=True)    # 去掉0,不计算log0
data['logtime'] = np.log10(data['time'])    # 求对数
data['logloc'] = np.log10(data['location'])   

data.head()
time location logtime logloc
1 5.05 124.99 0.703291 2.096875
2 10.10 499.95 1.004321 2.698927
3 15.15 1124.89 1.180413 3.051110
4 20.20 1999.80 1.305351 3.300987
5 25.25 3124.68 1.402261 3.494806
ax2 = sns.scatterplot(x='logtime', y='logloc', data=data)

在这里插入图片描述

from sklearn.linear_model import LinearRegression

reg = LinearRegression()
reg.fit(data[['logtime']], data[['logloc']])

# 返回直线的斜率和截距
(reg.coef_, reg.intercept_)
(array([[1.99996182]]), array([0.69028797]))
import numpy as np

X = np.arange(6).reshape(3, 2)
X
array([[0, 1],
       [2, 3],
       [4, 5]])
from sklearn.preprocessing import PolynomialFeatures    

# 多项式变换,2代表创建一个最高项为2的多项式:1 + x1 + x2 + x1*x1 + x1*x2 + x2*x2
poly = PolynomialFeatures(2)

# 将x1和x2依次代入行向量中,从而得到一个更大的特征矩阵
poly.fit_transform(X)
array([[ 1.,  0.,  1.,  0.,  0.,  1.],
       [ 1.,  2.,  3.,  4.,  6.,  9.],
       [ 1.,  4.,  5., 16., 20., 25.]])

项目案例

dc_data = pd.read_csv('/home/aistudio/data/data20514/sample_data.csv')
dc_data.head()
MONTH AIR_TIME
0 1 28
1 1 29
2 1 29
3 1 29
4 1 29
%matplotlib inline
import matplotlib.pyplot as plt

# 绘制特征“AIR_TIME”的直方图,看是否符合正态分布
h = plt.hist(dc_data['AIR_TIME'], bins=100)

23dsfdg

from scipy import stats

# 将特征AIR_TIME转换为二维矩阵,便于输入
transform = dc_data[['AIR_TIME']]

# 通过boxcox变换,将其变为正态分布
dft = stats.boxcox(transform)[0]   

# 检查是否符合正态分布
hbc = plt.hist(dft, bins=100)

adsfsd

from sklearn.preprocessing import power_transform

# power_transform:广义幂变换,它包含了:box-cox变换和yeo-johnson变换
dft2 = power_transform(dc_data[['AIR_TIME']], method='box-cox')   

hbcs = plt.hist(dft2, bins=100)

在这里插入图片描述

动手练习

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt

from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

df = pd.read_csv("/home/aistudio/data/data20514/xsin.csv")
colors = ['teal', 'yellowgreen', 'gold']

# 绘制散点图
plt.scatter(df['x'], df['y'], color='navy', s=30, marker='o', label="training points")

for count, degree in enumerate([3, 4, 5]):

    # PolynomialFeatures(),多项式变换
    # Ridge(),线性最小二乘L2正则化。该模型求解了线性最小二乘函数和L2正则化的回归模型。也称为岭回归或者Tikhonov 正则化。
    # make_pipeline可以将许多算法模型串联起来,比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。

    model = make_pipeline(PolynomialFeatures(degree), Ridge())    # 获得岭回归后的模型

    model.fit(df[['x']], df[['y']])     # 用真实数据来训练模型

    y_pre = model.predict(df[['x']])    # 通过训练好的模型来预测y值
    
    # 绘制预测图表,不难发现degree=4是与原数据集拟合的最好的
    plt.plot(df['x'], y_pre, color=colors[count], linewidth=2,
             label="degree %d" % degree)

# 绘制左上角的图例
plt.legend()

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3-4 数据变换 的相关文章

随机推荐

  • 服务器多网卡多路由策略

    场景背景与需求 某公司新买一台服务器 服务器资源 cpu 内存 硬盘 比较多 并且有多个网卡 运维工程师为了节省资源 在服务器上搭建多个服务 希望通过多个网卡实现流量分流 但由于运维工程师对网络理解不够深入 将服务器的多个网卡都配置了同一个
  • 被suse搞到崩溃了

    在Vmware上装了个suse 10 2 它还没崩溃 我快要崩溃了 这玩意号称最新最强的Linux 但是启动速度真的是慢的没法说 关机也是慢的没法说 点个按钮 半天才出来对话框 有时我都怀疑他是不是死掉了 多点几下 结果过一会出来一堆对话框
  • 2015年底总结

    时间过的好快 一年又过了 回顾这一年 经历了很多 成长了很多 今天对2015做一个简单的总结 同时展望一下未来 在14年总结中 今年的重点是考注册电气工程师 学习Android开发 在技术这块儿往精学 而不是多而不精 这一年 确实在注电考试
  • QQuickWidget里放置QML

    1 效果 2 QML 在资源里新建Mybattery qml import QtQuick 2 0 import QtQuick 2 12 Item id root property color color1 18FD18 绿色 健康 pr
  • @Retention注解作用

    Retention作用是定义被它所注解的注解保留多久 一共有三种策略 定义在RetentionPolicy枚举中 从注释上看 source 注解只保留在源文件 当Java文件编译成class文件的时候 注解被遗弃 被编译器忽略 class
  • c/c++调用system获取返回值

    目录 参考 命令 定义函数 调用 参考 在 c c 程序中 可以使用 system 函数运行命令行 但是只能得到该命令行的 int 型返回值 并不能获得显示结果 例如system ls 只能得到0或非0 如果要获得ls的执行结果 则要通过管
  • Jlink在ADS下的配置说明及常见问题解决办法

    阅读1087次 2013 4 2 21 04 37 Jlink在ADS下的配置说明及常见问题解决办法Zhaoxj 参考文档 1 TQ2440开发板使用手册V3 2 20121203 pdf 2 JLINK ADS 2440 pdf 注 1
  • HBase:Region的拆分

    为什么要拆分Region 首先 Region是一段Rowkey数据的集合 当查询一条数据时 会先从元数据中判断该条数据的Rowkye属于哪个Region 然后到指定的Region中查找 当一个Region过大时 在这个Region中查找Ro
  • java并发的基本概念和级别

    之前买了一本实战Java高并发程序设计 这里记一下笔记 至于书怎么样 读完之后再看值不值得推荐 先提供下试读pdf的 下载地址 关于java并发的一些概念 并发的概念 并发 Concurrency 和并行 Parallelism 并发偏重于
  • LVM扩容操作

    文章目录 一 测试环境 二 给lvm分区扩容 加硬盘 1 新增硬盘 2 给新的硬盘分区 3 Lvm操作 查看卷组状态 vgdisplay 创建物理卷 pvcreate dev sdb1 扩展卷组 vgextend 卷组名 物理卷路径 扩展逻
  • 为何程序员要考教师资格证?备考指南与职业价值

    大家好 我是苍何 一个刚拿完教师资格证的非主流程序员 我考教资完全是在两年前受到一位朋友的影响 我们姑且叫他小 y 小 y 是计算机科班名校毕业 985 大学硕士学历并在华为担任软件开发工程师 这样强的专业和大厂背景 已经吊打很多程序猿了
  • 升降压电路Charger&Boost 自己的小解读

    上图为charger内部大致的结构图 Vbus进来 Q1可先认为是二极管 当Q2开启时 可以向后级电感储能 当Q2关断时 Q3 SW 电池形成一个回路 因为同样接地 电感给电池充电 锂电池标称值为3 7V 满电电压是4 2V VBUS电压是
  • LPDDR4特点和基本概念--基于Hynix H9HCNNNBPUMLHR系列

    Feature 两个Channel 每个Channel有8个Bank 对于command和address 采用SDR传输减少总引脚数量 所有的command和address在CLK上升沿锁存 每两个时钟周期传输一个command 对于数据线
  • Oracle --------序列

    1 思考问题 在某张表中 存在一个id列 整数 用户希望在添加记录的时候 该列从1开始 自动的增长 如何处理 2 介绍 Oracle通过序列处理自动增长列 1 可以为表中的列自动产生值 2 由用户创建数据库对象 并可由多个用户共享 3 一般
  • 六. go 高性能编程之 空结构体 struct{} 的使用

    目录 空结构体的优点 实现集合Set 不发送数据的信道channel 仅包含方法的结构体 空结构体的优点 因为空结构体不占据内存空间 因此被广泛作为各种场景下的占位符使用 Go 语言中 可以使用 unsafe Sizeof 计算出一个数据类
  • DDR5内存条容量计算

    DDR5内存条容量计算 一 理解DDR5通道的变化 二 理解芯片package 三 DDR5 symmetric module容量计算 之前对DDR的一些基础知识进行了总结 最近需要了解DDR5的知识 在之前文章基础上又有一些认识 所以重新
  • NumPy 的随机采样模块 random 使用简单介绍

    NumPy的API的简单介绍 NumPy 提供的random模块 提供了方便的自动生成 伪 随机数的API 一 使用简单随机数API生成随机数组 1 random rand d0 d1 dn 参数 d0 d1 dn int optional
  • MySQL 存储函数

    文章目录 1 简介 2 创建存储函数 3 调用存储函数 4 查看存储函数 SHOW FUNCTION STATUS SHOW CREATE FUNCTION 5 修改存储函数 6 删除存储函数 参考文献 1 简介 MySQL 存储函数 St
  • java向多线程中传递参数的三种方法详细介绍

    在传统的同步开发模式下 当我们调用一个函数时 通过这个函数的参数将数据传入 并通过这个函数的返回值来返回最终的计算结果 但在多线程的异步开发模式下 数据的传递和返回和同步开发模式有很大的区别 由于线程的运行和结束是不可预料的 因此 在传递和
  • 3-4 数据变换

    3 4 数据变换 请参考 数据准备和特征工程 中的相关章节 调试如下代码 基础知识 import pandas as pd data pd read csv home aistudio data data20514 freefall csv