IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 利用sklearn编写线性回归 -> 正文阅读

[人工智能]利用sklearn编写线性回归

21.11.22学习内容:(代码均可运行)

首先生成随机数据

#生成随机实验数据
import numpy as np
X=[i for i in range(20)]
X=np.reshape(X,(10,2))#转化为,十个样本,每个样本两个特征值,10*2=20
print('X[:,0]= ',X[:,0])
x[:,n]、x[n,:]、x[:,m:n]三者区别如下
'''
X = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20]]) 
x[:,n]表示在全部数组(维)中取第n个数据,直观来说,x[:,n]就是取所有集合的第n个数据,
x[n,:]表示在n个数组(维)中取全部数据,直观来说,x[n,:]就是取第n集合的所有数据,
x[:,m:n],即取所有数据集的第m到n-1列数据
print(x[n,:])
'''

?建立基础线性模型,y=ax+b

#矩阵乘法,例如np.dot(X,X.T)
y=np.dot(X,[3,4])+2
print('y= ',y)
运行结果:
X[:,0]=  [ 0  2  4  6  8 10 12 14 16 18]
y=  [  6  20  34  48  62  76  90 104 118 132]

这时生成图片可以看到,模型过于简单

?因此,我们加上随机扰动:

#加入随机扰动
y_random=[]
for i in y:
    # np.random.seed(1)
    i += np.random.randint(-10, 10)#加入随机-10到10之间的整数作为扰动
    y_random.append(i)
print('y_random= ',y_random)

?

?对数据进行预处理,划分训练集以及测试集(若引用,生成的y_random不同,图也不同,不必在意)

#数据预处理
from sklearn.model_selection import train_test_split#数据划分
X_train,X_test,y_train,y_test=train_test_split(X,y_random,shuffle=False,test_size=0.2)
print('X_train= ',X_train)
print('y_test= ',y_test)

from sklearn.preprocessing import StandardScaler#标准化
scaler = StandardScaler()
scaler.fit(X_train)
scaler.transform(X_train)



X_train=  [[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]]
y_test=  [127, 140]

?随意加入空值:可以看到,在3处和末尾分别插入空值。

'''
axis=0代表往跨行(down),而axis=1代表跨列(across)
'''
x_c=np.copy(X)
x_c=np.append(x_c,[[20,np.nan]],axis=0)
x_c=np.insert(x_c,3,[[np.nan,5]],axis=0)
print(x_c)


[[ 0.  1.]
 [ 2.  3.]
 [ 4.  5.]
 [nan  5.]
 [ 6.  7.]
 [ 8.  9.]
 [10. 11.]
 [12. 13.]
 [14. 15.]
 [16. 17.]
 [18. 19.]
 [20. nan]]

空值处理:

1.利用pd.dataframe处理。

  1. data=data.fillna
  2. data=data.interpolate()
  3. data=data.dropna()
#利用pd填补空值
import pandas as pd
data=pd.DataFrame(x_c)
'''
data=data.fillna(method='ffill')
method='ffill',ffill用上一个值填补空值,bfill用后一个值填补空值

data=data.interpolate()
用上下相邻两个值平均值填补

暴力操作:data=data.dropna()直接删除带有空值的行
'''
#data=data.fillna(method='ffill')

data=data.interpolate()
# data=data.dropna()
print(data)

2.利用sklearn处理:

SimpleImputer(),用均值填充。
#利用sklearn填补空值
from sklearn.impute import SimpleImputer#导入模块
imp=SimpleImputer()
imp.fit(x_c)
imp=imp.transform(x_c)
x_c=imp
print(x_c)


[[ 0.          1.        ]
 [ 2.          3.        ]
 [ 4.          5.        ]
 [10.          5.        ]
 [ 6.          7.        ]
 [ 8.          9.        ]
 [10.         11.        ]
 [12.         13.        ]
 [14.         15.        ]
 [16.         17.        ]
 [18.         19.        ]
 [20.          9.54545455]]

线性回归模型构建:

#线性回归模型构建、拟合及使用
from sklearn.linear_model import LinearRegression
model=LinearRegression()
model.fit(X_train,y_train)
model.score(X_test,y_test)#模型评估值
model.predict(X_test)#预测值
model.coef_#斜率
model.intercept_#截距
'''
线性模型:y=X*a+b
model.coef_=[3.70833333 3.70833333]
np.dot(x_test,model.coef_+model.intercept_)
手动计算和LinearRegression()是一样的
'''

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:20:39  更:2021-11-23 12:21:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:39:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码