美文网首页
数据挖掘-数据

数据挖掘-数据

作者: 紫弟 | 来源:发表于2018-12-25 11:08 被阅读0次

    数据的描述

    import warnings
    warnings.filterwarnings("ignore")
    import pandas as pd
    db = pd.read_excel('model.xls')
    # 数据前5行
    db.head()
    # 数据的信息,缺省值,类型,行,列
    db.info()
    # 数据的基本统计描述
    db.describe()
    # 数据的缺失值
    db.apply(lambda x: sum(x.isnull()))
    # 第几列值出现的次数
    db.ix[:,[30]].apply(pd.value_counts)
    # 每一列值出现的次数
    for x in range(31):
        print(db.ix[:,[x]].apply(pd.value_counts))
    # 数据的分布图 最多9个
    import matplotlib.pyplot as plt
    import seaborn as sns
    # 画图字体乱码
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
    plt.rcParams['axes.unicode_minus'] = False  
    plt.figure(figsize=(30, 30))
    a = 1
    for val in db.ix[:,[x for x in range(9)]].columns:
        if str(db[val].dtype) == 'int32' or str(db[val].dtype) == 'int64' or str(db[val].dtype) == 'float64':
            if db.shape[1] >= 3:
                try:
                    b = "33" + str(a)
                    plt.subplot(int(b))
                    sns.distplot(db[val])
                    a = a + 1
                except:
                    print("%s里面有全部一个值的"%val)
            else:
                plt.subplot(int(str(1) + str(db.shape[1]) + str(a)))
                sns.distplot(db[val])
                a = a + 1
    plt.show()
    
    

    数据的噪声--错误,异常,不确定性,缺失

    # 缺失值的处理,若此列缺值太多,可放弃
    # 1 拿平均值填充
    from sklearn import preprocessing
    impute = preprocessing.Imputer()
    iris_X_prime = impute.fit_transform(iris_X)
    iris_X_prime[:5]
    #上面的计算可以通过不同的方法实现。默认是均值mean,一共是三种:
    
    #均值mean(默认方法)
    #中位数median
    #众数most_frequent
    
    iris_df.fillna(iris_df.mean())['sepal length (cm)'].head(5)
    

    数据属性--标称属性(多类,可枚举的)
    二元属性(0,1)
    序数属性(逐渐进阶的那种,出生-生长-老去-死了,有步骤的)
    数值属性(整数或者是实数值表示,看是否连续或者是离散(离散值是有限的)
    连续值是可以转换成离散

    数据属性--类别(object)

    # 数据类别转换,类别编码0,1,2,3
    from sklearn.preprocessing import LabelEncoder
    class_le = LabelEncoder()
    #用class_le.fit_transform将其转换
    data_label_num.iloc[:,0] = class_le.fit_transform(data_label_num.iloc[:,0].values)
    
    
    
    # One-hot编码
    from sklearn.preprocessing import OneHotEncoder
    #True 则返回一个array, False 则返回matrix矩阵
    onehot_age = OneHotEncoder(sparse=False).fit_transform(data[['age']])
    

    数据属性--数值(float,int)

    # 数据标准化
    from sklearn.preprocessing import StandardScaler
    std = StandardScaler()
    # 对训练集进行标准化操作
    #最后的结果均值为0,方差是1,从公式就可以看出。
    #但是当原始数据并不符合高斯分布的话,标准化后的数据效果并不好。适用于连续值
    x_train = std.fit_transform(db)
    x_train
    
    
    
    # 数据变换
    k = 4 #等宽法 
    #基于聚类分析的方法 
    from sklearn.cluster import KMeans 
    #引入KMeans 
    kmodel = KMeans(n_clusters = k, n_jobs = 4) 
    #建立模型,n_jobs是并行数,一般等于CPU数较好 
    kmodel.fit(c.values, 1) 
    #训练模型 
    e = pd.DataFrame(kmodel.cluster_centers_).sort_values(0) 
    #输出聚类中心,并且排序(默认是随机序的)
    print(e)
    w = e.rolling(2).mean().iloc[1:] 
    print(w)
    #相邻两项求中点,作为边界点 
    w = w.values.tolist()
    cmax = c.max().tolist()
    print(cmax)
    print(w)
    g=[0]
    for x in w:
        g.append(x[0])
    g.append(cmax[0])
    print(g)
    #把首末边界点加上,w[0]中0为列索引 
    a = c.values.tolist()
    #print(a)
    u=[]
    for x in a:
        u.append(x[0])
    print(u)
    
    # 利用pandas cut函数
    d3 = pd.cut(u, g, )
    print(d3)
    
    

    数据规约
    pca主成分分析

    特征选择--过滤型(移除低方差的特征,卡方检验),包裹型,嵌入型(基于树模型的特征选择)

    #方差选择法,返回值为特征选择后的数据
    #参数threshold为方差的阈值
    VarianceThreshold(threshold=3).fit_transform(iris.data)
    
    #选择K个最好的特征,返回选择特征后的数据 卡方检验
    data = SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
    
    
    
    
    #基于树模型的特征选择
    

    相关文章

      网友评论

          本文标题:数据挖掘-数据

          本文链接:https://www.haomeiwen.com/subject/exgaqqtx.html