在机器学习中,数据清洗与转换包括哪些内容?

对数据进行初步的预处理,需要将其转换为一种适合机器学习模型的表示形式对许多模型类型来说,这种表示就是包含数值数据的向量或者矩阵:

1)将类别数据编码成为对应的数值表示(一般使用1-of-k方法)-dumy

2)从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)

3)处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)

4)数值数据转换为类别数据以减少变量的值,比如年龄分段

5)对数值数据进行转换,比如对数转换

6)对特征进行正则化、标准化,以保证同一模型的不同输入变量的值域相同

7)对现有变量进行组合或转换以生成新特征,比如平均数(做虚拟变量)不断尝试

文本数据抽取有哪些方法?

词袋法︰将文本当作一个无序的数据集合,文本特征可以采用文本中的词条T进行体现,那么文本中出现的所有词条及其出现的次数就可以体现文档的特征

TF-IDF:词条的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降;也就是说词条在文本中出现的次数越多,表示该词条对该文本的重要性越高,词条在所有文本中出现的次数越少,说明这个词条对文本的重要性越高。TF(词频)指某个词条在文

本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量);IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。TF-IDF实际上是∶TF *IDF

有一种类数据[1,3,2,1,3,3,1],通过python实现哑编码代码?

def yumcode(a):

    y=[]

    for x in (1,2,3):

        if x==a:

            y.append(1)

        else:

            y.append(0)

    return y

yum=map(lambda x:yumcode(x) ,[1,3,2,1,3,3,1])

for e in yum:

    print(e)

在机器学习中,请写出模型效果判断常用算法。

MSE∶误差平方和,越趋近于0表示模型越拟合训练数据。

RMSE: MSE的平方根,作用同MSE

R2∶取值范围(负无穷,1],值越大表示模型越拟合训练数据;最优解是1;当模型预测为随机值的时候,有可能为负﹔若预测值恒为样本期望,R2为0

TSS∶总平方和TSS(Total Sum of Squares),表示样本之间的差异情况,是伪方差的m倍

RSS:残差平方和RSS ( Residual Sum of Squares ),表示预测值和样本值之间的差异情况,是MSE的m倍

请同学们使用逻辑回归根据鸢尾花(iris.data)分类建模

#加载数据

datas=pd.read_csv("datas/iris.data",header=None)#加载iris.data数据

#数据处理

datas=datas.replace("?",np.NaN)#把?号用NaN替换

datas=datas.dropna(how="any",axis=1)#删除NaN行

#提取X和Y

X=datas.iloc[:,0:-1]#取0到最后一列前一列

#对种类英文编码

Y=pd.Categorical(datas[4]).codes#对最后一列做编码

#对数据进行拆分

#逻辑回归是用来判断 y属于哪一个种类 1 0

train_x,test_x,train_y,test_y=train_test_split(X,Y,test_size=0.2,random_state=1)

#创建模型和训练模型

ss=StandardScaler()

train_x=ss.fit_transform(train_x)#把trainx数据标准化

test_x=ss.transform(test_x)#把testx数据标准化

logistic=LogisticRegressionCV(random_state=2,multi_class="ovr",cv=3)

logistic.fit(train_x,train_y) #能够识别三种花模型 求theta

#评估

proba=logistic.predict_proba(test_x)#每条记录每个种类的概率 30行 3列

ymy=label_binarize(test_y,classes=(0,1,2))#转换成哑编码 30行 3列

fpr,tpr,threshold=metrics.roc_curve(ymy.ravel(),proba.ravel())#ravel拉平,变成一维

auc=metrics.auc(fpr,tpr)#根据fpr tpr计算面积

print("auc",auc)



knn=KNeighborsClassifier(n_neighbors=5,algorithm="kd_tree")

knn.fit(train_x,train_y)#构建kd树

test_y_hat=knn.predict(test_x)



proba_knn=knn.predict_proba(test_x)

fpr1,tpr1,threshold1=metrics.roc_curve(ymy.ravel(),proba_knn.ravel())

auc1=metrics.auc(fpr1,tpr1)

print(auc1)

plt.figure()

#画逻辑回归算法ROC曲线

plt.plot(fpr,tpr,color='red',label='回归ROC auc:'+str(auc))

plt.plot(fpr1,tpr1,color='green',label='knnROC auc:'+str(auc1))

plt.legend()

plt.show()

利用梯度下降算法完成y=x.^2求解x并画出轨迹图

import numpy as np

import matplotlib.pyplot as plt

import sys

X=[]

Y=[]

def l(x):#相当损失函数

    return x*x#x^2

def h(x):#梯度

    return 2*x

theta=2#theta初始值2

# C:\Users\t430\AppData\Local\VZip

y=l(theta)#调用损失函数

f_change=2#损失变化

f_up=l(theta)#上次损失

Y.append(y)

X.append(theta)

b=0.8#a太大不收敛

i=0

print(f_change >1e-10)

while f_change >1e-10:

    theta=theta-b*h(theta)#更新theta

    tmp=l(theta)#theta的平方

    f_change=abs(f_up-tmp)

    f_up=tmp

    X.append(theta)

    Y.append(tmp)

    i=i+1

print(theta)

plt.figure()

plt.plot(X,Y,c="red")

print(X)

X2=np.arange(-2,2,0.1)

Y2=X2**2

plt.plot(X2,Y2,c="green")

plt.show()

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐