|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Julia999 于 2019-8-4 14:49 编辑
数据挖掘流程(一)数据读取:
读取数据,并进行展示
统计数据的各项指标
明确数据规模与要完成的任务
(二)特征理解分析
单特征分析,逐个变量分析对其结果的影响
多变量统计分析,综合考虑多种情况影响
统计绘图得出结果
(三)数据清洗与预处理
对缺失值进行填充
特征标准化/归一化
分析特征之间的相关性
(四)建立模型
特征数据与标签的准备
数据集切分
多种建模算法对比
继承策略等方案改进
Numpy:科学计算库 主要用来做矩阵运算 我们的数据就是行(样本)和列(特征)组成的,那么数据本身就是一个矩阵
Pandas:数据分析处理库 (相当于在Numpy的基础上再对函数进行了封装)
Matplotlib:可视化库
Seaborn-可视化库 更简单的可视化库封装上Matplotlib基础之上
Scikit-Learn-机器学习库 非常实用的机器学习库,这里面包含了基本上所有的机器学习算法
- import numpy
- data=numpy.genfromtxt('haberman1.txt',delimiter=',',dtype=str)
- print(type(data))
- print(data)
- print(help(numpy.genfromtxt))
- #将第2行3列的数据取出来
- data1=data[1,2]
- print(data1)
- #取出第一列和第二列
- data2=data[:,0:1]
- vector=numpy.array([1,2,3,4])
- matrix=numpy.array([1,2,3,4],[5,6,7,8])
- print(vector)
- print(matrix)
- print(vector.shape)
- print(matrix.shape)
- print(vector.dtype)
- #判断vector中有没有10
- vector==10
- #可以把返回的bool值当成索引
- equal_to_ten=(vector==10)
- print(equal_to_ten)
- print(vector[equal_to_ten])
- equal_to_ten_and_equal_to_five=(vector==10)&(vector==5)
- print(equal_to_ten_and_equal_to_five)
- equal_to_ten_or_equal_to_five=(vector==10)|(vector==5)
- print(equal_to_ten_or_equal_to_five)
- vector2=numpy.array(["1","2","3","4"])
- print(vector2.dtype)
- print(vector2)
- #类型转换
- vector2=vector2.astype(float)
- print(vector2.dtype)
- print(vector2)
- #求极值
- vector.min()
- #按行求和或者是按列进行求和
- matrix.sum(axis=1) #按行求和
- matrix.sum(axis=0)
复制代码
- import numpy as np
- print(np.arange(15))
- a=np.arange(15).reshape(3,5)
- print(a)
- print(a.ndim) #维度
- print(a.dtype.name)
- print(a.size) #有多少元素
- #初始化
- np.zeros((3,4))
- np.ones((2,3,4),dtype=np.int32) #三维
- #构造出固定范围元素 最后一个参数表示多少个一加
- np.arange(10,30,5)
- np.random.random((2,3))
复制代码
- import numpy as np
- from numpy import pi
- #最后一个参数表示我需要产生多少个元素,间隔是平均取的
- np.linspace(0,2*pi,100)
- #矩阵的点乘和叉乘
- A=np.array([1,2],
- [3,4])
- B=np.array([1,1],
- [2,2])
- #对应位置的元素相乘得到的矩阵
- print(A*B)
- #矩阵的乘法
- print(A.dot(B))
- print(np.dot(A,B))
复制代码
- import numpy as np
- #np.floor表示向下取整
- a=np.floor(10*np.random.random(3,4))
- print(a)
- #将一个矩阵拉成一个向量
- print(a.ravel())
- #再将拉成向量的矩阵重新变成矩阵
- a.shape(6,2)
- print(a)
- #转置
- print(a.T)
复制代码
- import numpy as np
- a=np.floor(10*np.random.random(2,2))
- b=np.floor(10*np.random.random(2,2))
- print(a)
- print(b)
- #hstack横拼接
- #print(np.hstack((a,b)))
- #vstack纵拼接
- print(np.vstack((a,b)))
- #分割
- c=np.floor(10*np.random.random(2,12))
- print(c)
- #hsplit横着切
- #np.hsplit(c,3)将c平均切分成3份
- print(np.hsplit(c,3))
- #np.hsplit(c,(3,4)在指定位置切刀
- print(np.hsplit(c,(3,4)))
- #vsplit竖着切
复制代码
复制:
- import numpy as np
- a=np.arrange(12)
- b=a
- b.shape(3,4)
- #发现改变b的值a的也会改变,并且两个变量的id也是一样的
- print(a.shape)
- print(id(a))
- print(id(b))
- #浅复制
- #a和c的不是同一个id,但是a和c是共用了一堆值,所以改变其中一个另外一个也发生改变
- c=a.view()
- print(c is a)
- c.shape=(2,6)
- print(c.shape)
- print(a.shape)
- print(id(c))
- print(id(a))
- #如何让他们指向不一样,又使他们的改变不会影响到另外一个
- d=a.copy()
- print(d is a)
- d[0,0]=999
- print(d)
- print(a)
复制代码
排序和索引:
- import numpy as np
- data=np.sin(np.arange(20)).reshape(5,4)
- print(data)
- #找到索引最大所在的位置
- #axis=0按列进行计算
- ind=data.argmax(axis=0)
- print(ind)
- #找到每一列中最大的数
- data_max=data[ind,range(data.shape[1])]
- print(data_max)
- a=np.arange(0,40,10)
- print(a)
- #行扩展成原来的两倍,列也扩展成原来的两倍
- b=np.tile(a,(2,2))
- print(b)
- #排序
- c=np.array([4,3,5],[1,2,1])
- print(c)
- #默认是从小到大进行排序 按照横向排序
- d=np.sort(a,axis=1)
- print(d)
- #求最小值的索引
- j=np.argsort(a)
- print(j)
- print(a[j])
复制代码
|
|