栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习算法基础1(数据集,特征抽取,归一化,标准化,缺失值处理)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习算法基础1(数据集,特征抽取,归一化,标准化,缺失值处理)

目录

1.数据集的组成

1.1可用数据集

1.2常用数据集结构组成

2.特征工程

2.1特征抽取

2.1.1sklearn 特征抽取API

2.1.2文本特征抽取中文问题

 2.2 文本特征常用方法tf-idf分析问题(NLP不用这个用更新的方法)

3特征预处理

3.1 标准缩放归一化

3.1.1sklearn归一化API: 

3.1.2归一化案例

 3.2 标准缩放 标准化(使用较多)

 3.2.1.sklearn特征化API:

3.3 标准缩放 缺失值处理 


1.数据集的组成

机器学习的数据:文件csv

pandas:读取工具

numpy:释放了GIL 实现多线程

1.1可用数据集

Kaggle网址:Find Open Datasets and Machine Learning Projects | KaggleDownload Open Datasets on 1000s of Projects + Share Projects on One Platform. Explore Popular Topics Like Government, Sports, Medicine, Fintech, Food, More. Flexible Data Ingestion.https://www.kaggle.com/datasets

UCI数据集网址: http://archive.ics.uci.edu/ml/http://archive.ics.uci.edu/ml/

scikit-learn网址:

http://scikit-learn.org/stable/datasets/index.html#datasetshttp://scikit-learn.org/stable/datasets/index.html

1.2常用数据集结构组成

2.特征工程

直接影响预测结果

2.1特征抽取

对文本等数据 进行特征值化,为了计算机理解数据

2.1.1sklearn 特征抽取API

sklearn.feature_extraction

1.对字典数据进行特征值化:

sklearn.feature_extraction.DictVectorizer

from sklearn.feature_extraction import DictVectorizer
def dictvec():

    '''
    字典数据抽取
    :return: none
    '''
    # 实例化
    dict = DictVectorizer(sparse=False)

    data = dict.fit_transform([{'city': '北京','temperature':100},
{'city': '上海','temperature':60},{'city': '深圳','temperature':30}])
    print(dict.get_feature_names())
    print(data)
    return None

if __name__=='__main__':
    dictvec()

 one-hot编码利于数据分析

2.文本特征提取

sklearn.feature_extraction.text.CountVectorizer

应用场景:文本分类,情感分析

def countvec():
    '''
    对文本特征值化
    '''
    cv = CountVectorizer()
    data =cv.fit_transform(["life is is short,i like python",
"life is too long,i dislike python"])
    print(cv.get_feature_names())
    print(data.toarray())

    return None

if __name__=='__main__':
    countvec()

 

2.1.2文本特征抽取中文问题

对于中文  按空格分词,单个字也不进行统计

利用 jieba 分词  可以自动对中文进行分词

def cutword():
    '''

    :return: c1,c2,c3
    '''
    con1 = jieba.cut('今天很残酷,明天更残酷,后天很美好,
但绝对大部分是死在明天晚上,所以每个人不要放弃今天。')
    con2 = jieba.cut('我们看到的从很远星系来的光是在
几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。')
    con3 = jieba.cut('如果只用一种方式了解某样事物,
你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。')
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)
    c1 = " ".join(content1)
    c2 = " ".join(content2)
    c3 = " ".join(content3)
    return c1, c2, c3
def hanzivec():
    '''
    对中文进行特征值化
    :return: None
    '''
    c1,c2,c3 = cutword()
    cv = CountVectorizer()
    data =cv.fit_transform([c1, c2, c3])
    print(cv.get_feature_names())
    print(data.toarray())
    return None

if __name__=='__main__':
    hanzivec()

 2.2 文本特征常用方法tf-idf分析问题(NLP不用这个用更新的方法)

term frequency       

inverse document frequency ;log(总文档数量/该词出现的文档数量)   用于调权重

def tfidfvec():
    '''
        对中文进行特征值化
        :return: None
        '''
    c1, c2, c3 = cutword()
    tf = TfidfVectorizer()
    data = tf.fit_transform([c1, c2, c3])
    print(tf.get_feature_names())
    print(data.toarray())
    return None


if __name__=='__main__':
    tfidfvec()

3特征预处理

通过特定的统计方法(数学方法)将数据转换成算法要求的数据

3.1 标准缩放归一化

特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间

3.1.1sklearn归一化API: 

sklearn.preprocessing.MinMaxScaler

def mm():
    '''
    归一化处理
    :return: None
    '''
    mm=MinMaxScaler(feature_range=(2,3)) #指定范围落在2-3
    data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
    print(data)
    return None


if __name__=='__main__':
    mm()

3.1.2归一化案例

 3.2 标准缩放 标准化(使用较多)

归一化:异常值对最大最小值影响较大,只适合传统精确小数据场景,所以最常见的是使用标准化

 标准化:特点:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内

对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变

对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

 3.2.1.sklearn特征化API:

scikit-learn.preprocessing.StandardScaler

def stand():
    '''
    标准化
    :return: None
    '''
    std = StandardScaler()
    data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
    print(data)
    return None


if __name__=='__main__':
    stand()

3.3 标准缩放 缺失值处理 

主要用pandas 处理   这里不常用

删除

如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列

插补

可以通过缺失值每行或者每列的平均值、中位数来填充

通常按列

def im():
    '''
    缺失值
    :return:
    '''
    im = SimpleImputer(missing_values=np.nan,strategy='mean')
    data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
    print(data)
    return None

if __name__=='__main__':
    im()

知识点补充引用:

【疑难杂症】sklearn老版本的Imputer和新版本SimpleImputer处理缺失值差异_百木从森的博客-CSDN博客_sklearn 版本

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号