※机器学习数据集构造/划分/流程处理/评估常用代码总结

数据集构造:

①点状数据
from sklearn.datasets.samples_generator import make_blobs
X, y = make_blobs(n_samples=50, centers=2, random_state=0, cluster_std=0.60)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='autumn')
②圆形数据
from sklearn.datasets.samples_generator import make_circles
X,y=make_circles(100, factor=.1, noise=.1)
③正态分布的数据
import scipy.stats as ss
norm_dist = ss.norm.rvs(size=20)   #构造符合正态分布的20个数据
ss.normaltest(norm_dist)        #检验是否为正态分布

数据集划分:
纯随机抽样方法

from sklearn.model_selection import train_test_split
train_set, test_set = train_test_split(data, test_size= , random_state= )

分层抽样

from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits= , test_size= , random_state=42)
for train_index, test_index in split.split(data, data['col']):
    start_train_set = data.loc[train_index] 
    start_test_set = data.loc[test_index]

random函数

batch_mask = np.random.choice(train_size,  batch_size)
使用np.random.choice() 可以从指定的数字中随机选择想要的数字。比如,np.random.choice(60000, 10)
会从0到59999之间随机选择10个数字。

数据集处理:
数据清理:
1 放弃相应区域 # data.dropna(subset=[“col”])
2 放弃这个属性 # data.drop(“col”, axis=1)
3 将缺失值设置为某个值 # data[“col”].fillna(median)

imputer 方法处理缺失值

from sklearn.processing import Imputer
imputer = Imputer(strategy="median")
imputer.fit( data['col'] ) #imputer计算了每个属性的中位数值
X=imputer.transform( data['col'])

处理文本和分类属性:

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data_encoded = encoder.fit_transform( data )

选取部分数据后,索引发生改变:

#重新定义数据索引方式
data_need=data_need.reset_index(drop=True)

流程化

from sklearn.pipeline import make_pipeline
pca =PCA(n_components=150, whiten=True, random_state=42)
svc = SVC(kernel='rbf', class_weights='balanced')
model = make_pipeline(pca, svc)

结果评估

from sklearn import metrics
#混淆矩阵
metrics.classification_report(truevalue, predicted)
#准确率:
accuracy = metrics.accuracy_score(Y_test, predict_test)
#召回率
recall = metrics.recall_score(Y_test, predict_test)
#f1指数
f1 = metrics.f1_score(Y_test, predict_test)

模型保存与加载

#模型保存
joblib.dump(lr_model, "lr.model")
#模型加载
load_lr = joblib.load("lr.model")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章