1411-李同学-算法方向-自然语言处理-就业:是 已关闭

1411-李同学-算法方向-自然语言处理-就业:是 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

## 机器学习算法分类以及开发流程

> 算法是核心,数据和计算是基础

> 找准定位,算法设计是算法工程师在做,我们要分析数据,分析业务,应用常见算法,特征工程,调参数,优化

- 学会分析问题,用算法解决问题

- 掌握算法基本思想

- 利用库和框架解决问题

### 算法分类

1、数据类型

- 离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,不能再细分,也不能进一步地提高精确度。

- 连续型数据:可以在某个范围内取任意数,即变量的取值可以是连续的,如长度时间质量值等。通常是非整数,含有小数部分。

2、 算法分类

1) 监督学习(预测)特征值+目标值

- 分类 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络

- 回归 线性回归 岭回归

- 标注 隐马尔科夫模型 不做要求

2) 无监督学习 特征值无标签,无标准答案

- 聚类 k-means

> 分类:目标值离散型 回归:目标值连续型

> 分类概念:分类是监督学习的一个核心问题,在监督学习中,当输出变量取有限个离散值时,预测问题变成为分类问题。最基础的便是二分类问题,即判断是非,从两个类别中选择一个作为预测结果。

> 应用:银行业务,图像处理,手写识别,文本分类

例子:

1、明天天气多少度:回归

2、明天天气是阴、晴还是雨:分类

3、人脸年龄预测:回归

4、人脸识别:分类

 

[展开全文]

## 数据降维

> 维度:特征的数量

> 为什么要降维:删除一些不必要的特征

- 特征选择

- 主成分分析

### 特征选择

特征选择的原因

- 冗余:部分特征相关度高,容易消耗计算性能

- 噪声:部分特征对预测结果有影响

特征选择的主要方法

- filter 过滤式 variance threshold

- embedded 嵌入式 正则化、决策树

- wrapper 包裹式

### 过滤式特征选择

sklearn.feature_selection.VarianceThreshold

 

> 特征之间容易相关 对于高纬度数据来说

n_components:

- 小数 百分比(0~1)保留多少信息 一般取90~95%

- 整数  减少到的特征数量

一般使用小数

[展开全文]

sklearn.preprocessing.MinMaxScaler

[展开全文]


### 特征的预处理: 对数据进行处理

### 特征预处理的方法

> 通过特定的统计方法,将数据转换成算法要求的数据

数值型数据:标准缩放:

- 归一化

- 标准化

类别型数据:one-hot编码

时间类型:时间的切分

### sklearn特征处理API

- sklearn.preprocessing

 

[展开全文]

### tf_  idf分析

朴素贝叶斯

> tf: term frequency(词的频率) 出现的次数

> idf: 逆文档频率 inverse document frequency 公式:log(总文档数量/该词出现的文档数量)

log() 输入的数值越小,结果越小。

> tf*idf 重要性 用以苹果一个词对于一个文件集或一个语料库中的其中一份文件的重要程度。

sklearn.feature_extraction.text.TfidVectorizer

[展开全文]

### 字典特征数据抽取

> 特征抽取:文本,字符串

> sklearn特征抽取API

- 字典特征抽取

sklearn.feature_extraction.Dictvectorizer

### Dictvectorizer语法

DictVectorizer.fit_transform(x)

返回sparse矩阵

### 流程

- 实例化DictVectorizer

- 输入数据并转换 fit_transform()

 

[展开全文]

### 数据对于特征的处理

pandas:一个数据读取非常方便以及基本的处理格式的工具

- 缺失值

- 数据转换

- 重复值 (机器学习中不需要进行去重)

sklearn:对于特征的处理提供了强大的接口

特征工程

> 概念:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性

> 意义:直接影响预测结果

### sklearn

> python语言的机器学习工具

> 机器学习算法的实现

- 数据的特征抽取

- 数据的特征预处理

- 数据的降维

 

 

 

 

[展开全文]

这最后i一个视频开了加速把 听得我心脏病都i要犯了

[展开全文]

## pandas时间序列

- pd.data_range(start=None, end=None,periods=None,freq="D")

[展开全文]

df.join()

> 默认情况下是把hang'hang索引相同的数据合并到一起

[展开全文]

### pandas常用统计方法

df[""].mean()

df["director"}.unique()

#获取演员的信息(字符串形式,以逗号隔开)

#tolist 大列表嵌套小列表

 temp=df["actors"].str.split(",").tolist() 

1) actors_list=[i for j in temp for i in j]

actors_num=len(set(actor_list))

df.argmax()  #最大值位置

df.argmin() #最小值位置

 

 

[展开全文]

### pandas 常用统计方法

[展开全文]

### 12、布尔索引

df[df["Count_AnimalName"]>800]

df[(df["Count"]>800)&(df["count"]<1000)]

df["info"].str.split("/").tolist() #将info标签下的列转为字符串切割再放到一个列表中。

### 13、缺失数据的处理

- nan

- 0

> 判断是否为nan

pd.isnull(df)

pf.notnull(df)

> 处理方式

- 删除nan所在的行列

dropna(axis=0,how="any",inplace=False) 

- any只要有一个为nan就删除

- all 全部为nan才删除

- inplace:是否进行原地修改

- 填充数据

t.fillna(t.mean()),

t2["age"]=t2["age"].fillna(t2["age"].mean())
print(t2)

t.fillna(t,median())

t.fillna(0)

> 处理为0的数据

t[t==0]=np.nan

 

 

[展开全文]

#pandas取行取列的主意是将

#- 方括号写数字表示取行,对行进行操作

#- 字符串,表示的取列索引,对列进行操作

df[:20] #取前20行

df[:20]["Row_Labels"]

df.loc #通过标签进行索引

df.iloc #通过位置进行索引

t.loc["A","W"] #第a行w列

t.loc["A",["W","Z"]] #a行w列和a行z列,type:series

t.loc[["A","C"],["W","Z"]] a行c行于w列z列交汇处

t.loc["A":"C",["W","Z"]] a行到c行的w列和z列的数组

[展开全文]

df.shape #行数列数

df.dtypes  #列数据类型

df.ndim   #数据维度

df.index  #行索引

df.columns #列索引

df.values #对象值 二维数组

df.head(3)  #显示头部三行

df.tail(3)  #显示末尾几行

df.info()  #相关信息概览

df.describe() #快速综合统计结果

 

df=df.sort_values(by="")

[展开全文]

## 为什么要学习pandas

> 与numpy处理数值不同,pandas还可以处理其他类型的数据

- high-performance

- easy to use data structures

- data analysis tool

> series 一维,带标签的数组

> dataframe 二维

### series创建

 

[展开全文]

## 总结

### 1、如何选择一行或者多行的数据

> 切片和索引

- 选择行 t[2],   t[3:,:]

- 选择列   t[,4]

- 选择行列   不连续的 t[[2,3],[2,3]]

连续的: t[2:,3:]

- 索引 t[2,3]

### 2、给选择的行和列赋值

- 赋值 t[2:.3]=3

### 3、把大于10的替换

- 布尔索引

t[t>10]=10

- 三元运算符

np.where(t>10,20,0) 把t中大于10的换位20,其他替换为0

- 裁剪 t.clip(10,20) 小于10的替换为10,大于10的替换为20

### 4、转置

- t.T

- t.transpose()

- t.swapaxes(1,0)

### 5、读取本地文件

np.loadtxt(filepath,delimiter,dtype)

### 6、np.nan/np.inf

nan表示不是一个数字

- np.nan!=np.nan

- np.count_nonzero(np.nan!=np.nan)

- np.isnan(t)

inf表示无穷的

### 7、常用的统计函数

- t.sum()

- t.mean

- np.median(t)

- t.max()

- t.min()

- np.ptp(t)

- t.std(): 标准差反应数据的离散程度或者说稳定程度。

 

 

[展开全文]

- nan :not a number:表示不是一个数字

- inf :infinity,inf表示正无穷,-inf表示负无穷。

- 两个nan不相等

- np.nan!=np.nan

- 利用以上特性可以判断数组中nan的个数,np.count_nonzero(t!=t)

- 判断是否含有nan: np.isnan(a)

- nan和任何值计算都为nan

> 将一组数组中的nan都替换为0,替换后的平均值肯定会变小,所以更一般的方式是把确实的数值替换为均值或者是直接删除有缺失值的一行。

[展开全文]

### numpy常用方法

np.argmax(t,axis=0) #获取最大值,取每一列的最大值

np.argmin(t,axis=1)  #获取最小值  取每一行的最小值

np.zeros((3,4))  #创建一个全为0的数组

np.ones((3,4))  #创建一个全为1的数组

np.eye(3)  #创建一个对角线为1的正方形数组

[展开全文]

### 6、轴

- 二维数组的轴,横轴和纵轴

- 三维数组,xyz轴

### 7、numpy读取数据

np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

- dtype:数据类型

- delimiter 分割字符串,默认为空格

- skiprows 跳过前x行,一般跳过表头

- usecols 读取指定的列,索引,元组类型

- unpack:如果为True,读入属性将分别写入不同数组变量,false读入数据只写入一个数组变量,默认False。

 

 

[展开全文]