数据的描述
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)
#基于树模型的特征选择
网友评论