机器学习算法基础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常用数据集结构组成

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

2.特征工程

直接影响预测结果

2.1特征抽取

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

2.1.1sklearn 特征抽取API

sklearn.feature_extraction

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

sklearn.feature_extraction.DictVectorizer

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

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()

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

 one-hot编码利于数据分析

2.文本特征提取

sklearn.feature_extraction.text.CountVectorizer

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

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

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(总文档数量/该词出现的文档数量)   用于调权重

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

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

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()

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

3特征预处理

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

3.1 标准缩放归一化

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

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

3.1.1sklearn归一化API: 

sklearn.preprocessing.MinMaxScaler

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

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归一化案例

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

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

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

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

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

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

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

 3.2.1.sklearn特征化API:

scikit-learn.preprocessing.StandardScaler

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

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 版本

你可能感兴趣的:(Python笔记,机器学习,人工智能)