数据挖掘-数据

数据的描述

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)




#基于树模型的特征选择

你可能感兴趣的:(数据挖掘-数据)