• 算法代码


    数据预处理-算法加工-预测-校验

    knn 

    就是算距离,距离近的就是

         #构建kNN分类器
        neigh = kNN(n_neighbors = 3, algorithm = 'auto')
        #拟合模型, trainingMat为训练矩阵,hwLabels为对应的标签
        neigh.fit(trainingMat, hwLabels)
        #获得预测结果,vectorUnderTest 向量
            classifierResult = neigh.predict(vectorUnderTest)    

    决策树

    算信息熵增益最大的,信息熵代表混乱程度

    lenses_pd = pd.DataFrame(lenses_dict)  # 生成pandas.DataFrame
    # print(lenses_pd) #打印pandas.DataFrame
    le = LabelEncoder() # 创建LabelEncoder()对象,用于序列化
    for col in lenses_pd.columns: # 序列化
    lenses_pd[col] = le.fit_transform(lenses_pd[col])

    clf = tree.DecisionTreeClassifier(max_depth=4) # 创建DecisionTreeClassifier()类
    clf = clf.fit(lenses_pd.values.tolist(), lenses_target) # 使用数据,构建决策树

    dot_data = StringIO()
    tree.export_graphviz(clf, out_file=dot_data, # 绘制决策树
    feature_names=lenses_pd.keys(),
    class_names=clf.classes_,
    filled=True, rounded=True,
    special_characters=True)
    # graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
    # graph.write_pdf("tree.pdf") # 保存绘制好的决策树,以PDF的形式存储。

    print(clf.predict([[1, 1, 1, 0]])) # 预测

     naive 贝叶斯

    算概率

    P(侮辱类|stupid,garbage)=P(stupid|侮辱类)xP(garbage|侮辱类)xP(侮辱类)/P(stupid,garbage)

    P(非侮辱类|stupid,garbage)=P(stupid|非侮辱类)xP(garbage|非侮辱类)xP(非侮辱类)/P(stupid,garbage)

    每一个句子都可以用向量表示:表示为大小为词典大小,如果出现,在相应的位置上标志为1

    先算出侮辱类p01,非侮辱类p00 ,

    p01=侮辱类向量(相加)/侮辱类词数

    p01=非侮辱类向量(相加)/非侮辱类词数

    然后算  测试的向量*p01xP(侮辱类),  测试的向量*p00xP(非侮辱类) ,比较两个值的大小,如果哪个大就是哪个类的

    def trainNB0(trainMatrix,trainCategory):
        numTrainDocs = len(trainMatrix)                            #计算训练的文档数目
        numWords = len(trainMatrix[0])                            #计算每篇文档的词条数
        pAbusive = sum(trainCategory)/float(numTrainDocs)        #文档属于侮辱类的概率
        p0Num = np.ones(numWords); p1Num = np.ones(numWords)    #创建numpy.zeros数组, 这个初始化为1 是为了不=0,等下相乘的时候肯定会=0,所以不能为0
        p0Denom = 2.0; p1Denom = 2.0                            #分母初始化为0.0 
        for i in range(numTrainDocs):
            if trainCategory[i] == 1:                            #统计属于侮辱类的条件概率所需的数据,即P(w0|1),P(w1|1),P(w2|1)···
                p1Num += trainMatrix[i]
                p1Denom += sum(trainMatrix[i])                  ## 该词条的总的词数目   这压样求得每个词条出现的概率 P(w1),P(w2), P(w3)...
            else:                                                #统计属于非侮辱类的条件概率所需的数据,即P(w0|0),P(w1|0),P(w2|0)···
                p0Num += trainMatrix[i]
                p0Denom += sum(trainMatrix[i])
        p1Vect = np.log(p1Num / p1Denom)  # 取对数,防止下溢出
        p0Vect = np.log(p0Num / p0Denom)
        return p0Vect,p1Vect,pAbusive    
  • 相关阅读:
    文件上传控件 jQueryFileUpload在 MVC3中的实现
    谈谈开心王国的用户注册页面
    一个个人网站如何融资一千万
    netTcpBinding三种方法实现调用函数
    MVC实现RadioButtonList
    网易盖楼回复的简易实现
    sqlserver复制表结构
    显示目录下所有文件列表
    Jira:用户权限设置
    C#:Socket通信
  • 原文地址:https://www.cnblogs.com/dzhou/p/10551172.html
Copyright © 2020-2023  润新知