目录

一、文本预处理

1.训练集预处理

a)导入预处理所需要的包

b)读取训练集数据,并且将列特征属性命名为分类、文章

c)以下为分词的结果

d)遍历分类列,去除重复元素,labels为四个分类

e)重编码分类列,将字符型通过重编码转换为数值型

f)查看结果,y为分类列重编码后的值

g)初步降维

h)nmi降维

2.测试集预处理

二、模型训练

1.训练集模型训练

a)支持向量机(SVC)

b)逻辑斯蒂分类器

c)高斯朴素贝叶斯

d)随机森林分类器

e)Knn分类器

f)AdaBoost分类器

3.结果展示

a)训练集模型得分

b)测试集模型得分

三、难点与总结

四、源码


一、文本预处理

分别对训练集测试集进行预处理

训练集data数据与测试集test数据都为新闻类数据压缩包获取而来

训练集数据概览

测试集数据概览

1.训练集预处理

a)导入预处理所需要的包

  1. import pandas as pd
  2. import jieba, time
  3. #tfidf
  4. from sklearn.feature_extraction.text import TfidfVectorizer
  5. #计算nmi
  6. from sklearn import metrics

b)读取训练集数据,并且将列特征属性命名为分类、文章

  1. train_df = pd.read_csv(
  2. 'D:/文本挖掘/作业四/data.csv', sep=',', header=None,encoding='utf-8')
  3. train_df.columns = ['分类', '文章']
  4. #生成停用词表
  5. stopword_list = [k.strip() for k in open(
  6. 'D:/文本挖掘/新闻类/stopwords.txt', encoding='utf-8') if k.strip() != '']
  7. #生成分词表
  8. cutWords_list = []
  9. for i in range(0,len(train_df)):
  10. #分词
  11. outstr = ''
  12. seg_list = jieba.cut(train_df['文章'][i].strip())
  13. for word in seg_list :#读取每一行分词
  14. if word not in stopword_list:
  15. if word != '\t':  #不加空格进去
  16. outstr += word + " "
  17. cutWords_list.append(outstr)#将该行分词写入列表形式的总分词列表

c)以下为分词的结果

d)遍历分类列,去除重复元素,labels为四个分类

['汽车', '娱乐', '军事', '运动']

e)重编码分类列,将字符型通过重编码转换为数值型

  1. #遍历带字符的列
  2. for fea in  ['分类']:
  3. labels = train_df[fea].unique().tolist()   #unique去重复元素,tolist转成列表
  4. train_df[fea] = train_df[fea].apply(lambda x:labels.index(x))
  5. y = train_df['分类']

f)查看结果,y为分类列重编码后的值

g)初步降维

运用sklearn的TfidfVectorizer模块制作tfidf矩阵,指定矩阵数值类型,将出现频率小于2的值忽略(初步降维),通过正则表达式过滤非中文数据,标准化后制作tfidf矩阵,提取词向量对应每一列列名为b

  1. tfidfVectorizer = TfidfVectorizer(
  2. dtype = float,
  3. min_df = 2,
  4. token_pattern=u'[\u4e00-\u9fa5]+',
  5. norm = 'l2' )
  6. #生成矩阵的数值类型
  7. #如果某个词的document frequence小于2,则这个词不会被当作关键词
  8. #通过正则表达式来确定非中文字符数据被过滤掉
  9. #标准化
  10. #训练和测试的词频向量格式保持一致
  11. X_Vector=tfidfVectorizer.fit_transform(cutWords_list)  # 将文章转化为tfidf矩阵
  12. b = tfidfVectorizer.get_feature_names()

结果如下图所示

将列名添加给矩阵,制作数据框形式查看数据tfidf矩阵的结果

  1. #将列名添加给矩阵
  2. df = pd.DataFrame(X_Vector.toarray(),columns=b)

结果如下图所示

h)nmi降维

主要思想是利用sklearn中metrics计算nmi值,代码实现如下所示,将tdidf矩阵中每一列对应的词都与总文档数200(y)计算,得出所有词(917)的nmi值

  1. #计算nmi
  2. nmi ={}
  3. for i in range(X_Vector.shape[1]):
  4. x = X_Vector.toarray()[:,i]
  5. result_NMI = metrics.normalized_mutual_info_score(x,y)
  6. nmi[b[i]] = result_NMI

查看nmi结果

利用字典对nmi进行排序,选择nmi值在前500的词(二次降维,利用nmi降维的实现)

  1. #给nmi值进行排序
  2. nmi=sorted(nmi.items(),key=lambda x:x[1],reverse=True)
  3. print(len(nmi))
  4. #获取nmi前500
  5. ls=nmi[:500]
  6. #查看是否降维成功
  7. print(len(ls))

从结果可以看出由917个词降维成500个词,结果如下,此时的结果为元组

提取前500词所在对应列的tfidf值,通过循环实现

先定义空列表提取元组的0列即词

  1. #定义一个空列表为l
  2. l = []
  3. #遍历通过nmi降维得到的nmi词袋列表ls,将得到的500个词追加到l中,便于后边循环
  4. for i in range(len(ls)):
  5. l.append(ls[i][0])

提取出的结果如下所示

利用循环嵌套,遍历刚刚提取出来的l词列表,与原tfidf中词向量对应的每一列列名b对比,将对应结果为相等的词对应列的tfidf值追加到新列表中,转换数据类别,得到全新的tfidf矩阵

  1. #定义新列表
  2. hh = []
  3. #将降维得到的500个词和原来917个词对比,将原tfidf矩阵中对应词列追加到新列表hh中
  4. for j in l:
  5. for z in b:
  6. if j == z:
  7. hh.append(df[z].tolist())
  8. #基于nmi降维得到的全新tfidf矩阵hh转换为数组形式方便后续分类器模型运用
  9. xx = np.array(hh).reshape(200,500)
  10. #至此预处理完成

查看预处理结果

2.测试集预处理

与训练集思路一致,没有进行nmi降维,不做展示,详情看源码

结果显示

  1. #训练集预处理
  2. test_df = pd.read_csv(
  3. 'D:/文本挖掘/作业四/test.csv', sep=',', header=None,encoding='utf-8')
  4. test_df.columns = ['分类', '文章']
  5. #生成停用词表
  6. stopword_list = [k.strip() for k in open(
  7. 'D:/文本挖掘/新闻类/stopwords.txt', encoding='utf-8') if k.strip() != '']
  8. #生成分词表
  9. test_cutWords_list = []
  10. for i in range(0,len(test_df)):
  11. #分词
  12. outstr = ''
  13. seg_list = jieba.cut(test_df['文章'][i].strip())
  14. for word in seg_list :#读取每一行分词
  15. if word not in stopword_list:
  16. if word != '\t':  #不加空格进去
  17. outstr += word + " "
  18. test_cutWords_list.append(outstr)#将该行分词写入列表形式的总分词列表
  19. #遍历带字符的列
  20. for fea in  ['分类']:
  21. labels = test_df[fea].unique().tolist()   #unique去重复元素,tolist转成列表
  22. test_df[fea] = test_df[fea].apply(lambda x:labels.index(x))
  23. y_text = test_df['分类']
  24. #生成矩阵的数值类型
  25. #如果某个词的document frequence小于5,则这个词不会被当作关键词
  26. #通过正则表达式来确定非中文字符数据被过滤掉
  27. #标准化
  28. test_tfidfVectorizer = TfidfVectorizer(
  29. dtype = float,
  30. min_df = 2,
  31. token_pattern=u'[\u4e00-\u9fa5]+',
  32. norm = 'l2' )
  33. #训练和测试的词频向量格式保持一致
  34. test_X_Vector=text_tfidfVectorizer.fit_transform(test_cutWords_list)  # 将文章转化为tfidf矩阵
  35. b = test_tfidfVectorizer.get_feature_names()#获得tfidf矩阵对应特征
  36. #将列名添加给矩阵
  37. df = pd.DataFrame(test_X_Vector.toarray(),columns=b)
  38. xx_test = np.array(test_X_Vector.toarray()).reshape(44,107)
  39. #至此预处理完成

二、模型训练

1.训练集模型训练

将得到的xx作为训练集‘x’参数与y(总文档分类列重编码后的结果)作为‘y’参数进行模型训练

a)支持向量机(SVC)

  1. from sklearn.svm import SVC
  2. #svc支持向量机
  3. clf = SVC()
  4. clf.fit(xx,y)
  5. #4.计算svc分类器的准确率
  6. print("训练集:",clf.score(xx,y))

b)逻辑斯蒂分类器

  1. from sklearn.linear_model import LogisticRegression
  2. #逻辑斯蒂文本分类实现
  3. logitmodel=LogisticRegression()#定义回归模型
  4. logitmodel.fit(xx,y)#训练模型
  5. #4.计算逻辑斯蒂文本分类器的准确率
  6. print("训练集:",logitmodel.score(xx,y))

c)高斯朴素贝叶斯

  1. from sklearn.naive_bayes import GaussianNB
  2. #朴素贝叶斯的实现
  3. beiyesi = GaussianNB()#定义回归模型
  4. beiyesi.fit(xx,y)#训练模型
  5. print("训练集:",beiyesi.score(xx,y))

d)随机森林分类器

  1. from sklearn.ensemble import RandomForestClassifier
  2. #随机森林分类实现
  3. rfc = RandomForestClassifier()#定义回归模型
  4. rfc.fit(xx,y)#训练模型
  5. print("训练集:",rfc.score(xx,y))

e)Knn分类器

  1. from sklearn.neighbors import KNeighborsClassifier
  2. #knn分类器
  3. classifier = KNeighborsClassifier()    # 定义模型
  4. classifier.fit(xx,y)#训练模型
  5. print("训练集:",classifier.score(xx,y))

f)AdaBoost分类器

  1. from sklearn.ensemble import AdaBoostClassifier
  2. # AdaBoost的实现
  3. AB = AdaBoostClassifier()#定义模型
  4. AB.fit(xx,y)#训练模型
  5. print("训练集:",AB.score(xx,y))

2.训练集模型训练

  1. from sklearn.linear_model import LogisticRegression
  2. #逻辑斯蒂文本分类实现
  3. logitmodel=LogisticRegression()#定义模型
  4. logitmodel.fit(xx_test,y_test)#训练模型
  5. #4.计算逻辑斯蒂文本分类器的准确率
  6. print("测试集:",logitmodel.score(xx_test,y_test))
  7. from sklearn.naive_bayes import GaussianNB
  8. #朴素贝叶斯的实现
  9. beiyesi = GaussianNB()#定义模型
  10. beiyesi.fit(xx_test,y_test)#训练模型
  11. print("测试集:",beiyesi.score(xx_test,y_test))
  12. from sklearn.ensemble import RandomForestClassifier
  13. #随机森林分类实现
  14. rfc = RandomForestClassifier()#定义模型
  15. rfc.fit(xx_test,y_test)#训练模型
  16. print("测试集:",rfc.score(xx_test,y_test))
  17. from sklearn.svm import SVC
  18. #svc支持向量机
  19. clf = SVC()
  20. clf.fit(xx_test,y_test)
  21. #4.计算svc分类器的准确率
  22. print("测试集:",clf.score(xx_test,y_test))
  23. from sklearn.neighbors import KNeighborsClassifier
  24. #knn分类器
  25. classifier = KNeighborsClassifier()    # 定义模型
  26. classifier.fit(xx_test,y_test)#训练模型
  27. print("测试集:",classifier.score(xx_test,y_test))
  28. from sklearn.ensemble import AdaBoostClassifier
  29. # AdaBoost的实现
  30. AB = AdaBoostClassifier()#定义模型
  31. AB.fit(xx_test,y_test)#训练模型
  32. print("测试集:",AB.score(xx_test,y_test))

3.结果展示

a)训练集模型得分

b)测试集模型得分

三、难点与总结

难点

遇到的问题在nmi降维上,实际上选取nmi总体前500的词并不能完全代表数据中的每个文档,因为并不明确每个文档前几的词是否有重复,最应该选择的nmi降维方式应该是对应每个文档nmi为前5或者前10的词进行降维,但是本次小组讨论中并没有讨论出合适的方法,找到合适的文献去进行该工作。

总结

文本挖掘与数据挖掘不同点在于文本挖掘需要清楚了解如何通过tfidf矩阵将字符型词转换为数值型方便后续运算。

在最终模型测试中可以看见朴素贝叶斯分类器在测试集与训练集都非常高,随机森林分类器简直为训练集量身定制,准确率吻合1.0,而神经网络有关的两个分类器准确率需要通过调参去找到使分类结果准确率更高的参数,如果按默认参数使用该两个神经网络分类器,在训练集中效果不足。

四、源码

import pandas as pd

import jieba, time

import numpy as np

#tfidf

from sklearn.feature_extraction.text import TfidfVectorizer

#计算nmi

from sklearn import metrics

#svc支持向量机

from sklearn.svm import SVC

from sklearn.metrics import accuracy_score

#朴素贝叶斯

from sklearn.naive_bayes import GaussianNB

#随机森林

from sklearn.ensemble import RandomForestClassifier

#逻辑斯蒂

from sklearn.linear_model import LogisticRegression

#knn分类器

from sklearn.neighbors import KNeighborsClassifier

#AdaBoost分类

from sklearn.ensemble import AdaBoostClassifier

train_df = pd.read_csv('D:/文本挖掘/作业四/data.csv', sep=',', header=None,encoding='utf-8')

train_df.columns = ['分类', '文章']

#生成停用词表

stopword_list = [k.strip() for k in open('D:/文本挖掘/新闻类/stopwords.txt', encoding='utf-8') if k.strip() != '']

#生成分词表

cutWords_list = []

for i in range(0,len(train_df)):

#分词

outstr = ''

seg_list = jieba.cut(train_df['文章'][i].strip())

for word in seg_list :#读取每一行分词

if word not in stopword_list:

if word != '\t':  #不加空格进去

outstr += word + " "

cutWords_list.append(outstr)#将该行分词写入列表形式的总分词列表

#遍历带字符的列

for fea in  ['分类']:

labels = train_df[fea].unique().tolist()   #unique去重复元素,tolist转成列表

train_df[fea] = train_df[fea].apply(lambda x:labels.index(x))

y = train_df['分类']

#生成矩阵的数值类型

#如果某个词的document frequence小于5,则这个词不会被当作关键词

#通过正则表达式来确定非中文字符数据被过滤掉

#标准化

tfidfVectorizer = TfidfVectorizer(

dtype = float,

min_df = 2,

token_pattern=u'[\u4e00-\u9fa5]+',

norm = 'l2' )

#训练和测试的词频向量格式保持一致

X_Vector=tfidfVectorizer.fit_transform(cutWords_list)  # 将文章转化为tfidf矩阵

b = tfidfVectorizer.get_feature_names()#获得tfidf矩阵对应特征

#将列名添加给矩阵

df = pd.DataFrame(X_Vector.toarray(),columns=b)

#计算nmi

nmi ={}

for i in range(X_Vector.shape[1]):

x = X_Vector.toarray()[:,i]

result_NMI = metrics.normalized_mutual_info_score(x,y)

nmi[b[i]] = result_NMI

#给nmi值进行排序

nmi=sorted(nmi.items(),key=lambda x:x[1],reverse=True)

print(len(nmi))

#获取nmi前500

ls=nmi[:500]

#查看是否降维成功

print(len(ls))

#查看排序后的前500个词的nmi

ls

#定义一个空列表为l

l = []

#遍历通过nmi降维得到的nmi词袋列表ls,将得到的500个词追加到l中,便于后边循环

for i in range(len(ls)):

l.append(ls[i][0])

#查看l

l

#定义新列表

hh = []

#将降维得到的500个词和原来917个词对比,将原tfidf矩阵中对应词列追加到新列表hh中

for j in l:

for z in b:

if j == z:

hh.append(df[z].tolist())

#基于nmi降维得到的全新tfidf矩阵hh转换为数组形式方便后续分类器模型运用

xx = np.array(hh).reshape(200,500)

#至此预处理完成

print(xx.shape)

print(xx)

#训练集预处理

test_df = pd.read_csv('D:/文本挖掘/作业四/test.csv', sep=',', header=None,encoding='utf-8')

test_df.columns = ['分类', '文章']

#生成停用词表

stopword_list = [k.strip() for k in open('D:/文本挖掘/新闻类/stopwords.txt', encoding='utf-8') if k.strip() != '']

#生成分词表

test_cutWords_list = []

for i in range(0,len(test_df)):

#分词

outstr = ''

seg_list = jieba.cut(test_df['文章'][i].strip())

for word in seg_list :#读取每一行分词

if word not in stopword_list:

if word != '\t':  #不加空格进去

outstr += word + " "

test_cutWords_list.append(outstr)#将该行分词写入列表形式的总分词列表

#遍历带字符的列

for fea in  ['分类']:

labels = test_df[fea].unique().tolist()   #unique去重复元素,tolist转成列表

test_df[fea] = test_df[fea].apply(lambda x:labels.index(x))

y_text = test_df['分类']

#生成矩阵的数值类型

#如果某个词的document frequence小于5,则这个词不会被当作关键词

#通过正则表达式来确定非中文字符数据被过滤掉

#标准化

test_tfidfVectorizer = TfidfVectorizer(

dtype = float,

min_df = 2,

token_pattern=u'[\u4e00-\u9fa5]+',

norm = 'l2' )

#训练和测试的词频向量格式保持一致

test_X_Vector=text_tfidfVectorizer.fit_transform(test_cutWords_list)  # 将文章转化为tfidf矩阵

b = test_tfidfVectorizer.get_feature_names()#获得tfidf矩阵对应特征

#将列名添加给矩阵

df = pd.DataFrame(test_X_Vector.toarray(),columns=b)

xx_test = np.array(test_X_Vector.toarray()).reshape(44,107)

#至此预处理完成

print(xx_test.shape)

print(xx_test)

#训练集测试模型

clf = SVC()  #选择SVC模型

clf.fit(xx,y)

#4.计算svc分类器的准确率

print("训练集:",clf.score(xx,y))

#逻辑斯蒂文本分类实现

logitmodel=LogisticRegression()#定义回归模型

logitmodel.fit(xx,y)#训练模型

#4.计算逻辑斯蒂文本分类器的准确率

print("训练集:",logitmodel.score(xx,y))

#朴素贝叶斯的实现

beiyesi = GaussianNB()#定义回归模型

beiyesi.fit(xx,y)#训练模型

print("训练集:",beiyesi.score(xx,y))

#随机森林分类实现

rfc = RandomForestClassifier()#定义回归模型

rfc.fit(xx,y)#训练模型

print("训练集:",rfc.score(xx,y))

#knn分类器

classifier = KNeighborsClassifier()    # 定义模型

classifier.fit(xx,y)#训练模型

print("训练集:",classifier.score(xx,y))

# AdaBoost的实现

AB = AdaBoostClassifier()#定义模型

AB.fit(xx,y)#训练模型

print("训练集:",AB.score(xx,y))

#测试集模型测试

#逻辑斯蒂文本分类实现

logitmodel=LogisticRegression()#定义模型

logitmodel.fit(xx_test,y_test)#训练模型

#4.计算逻辑斯蒂文本分类器的准确率

print("测试集:",logitmodel.score(xx_test,y_test))

#朴素贝叶斯的实现

beiyesi = GaussianNB()#定义模型

beiyesi.fit(xx_test,y_test)#训练模型

print("测试集:",beiyesi.score(xx_test,y_test))

#随机森林分类实现

rfc = RandomForestClassifier()#定义模型

rfc.fit(xx_test,y_test)#训练模型

print("测试集:",rfc.score(xx_test,y_test

clf = SVC()  #选择SVC模型

clf.fit(xx_test,y_test)

#4.计算svc分类器的准确率

print("测试集:",clf.score(xx_test,y_test))

#knn分类器

classifier = KNeighborsClassifier()    # 定义模型

classifier.fit(xx_test,y_test)#训练模型

print("测试集:",classifier.score(xx_test,y_test))

# AdaBoost的实现

AB = AdaBoostClassifier()#定义模型

AB.fit(xx_test,y_test)#训练模型

print("测试集:",AB.score(xx_test,y_test))

#4.计算svc分类器的准确率

print("训练集:",clf.score(xx,y))

#4.计算逻辑斯蒂文本分类器的准确率

print("训练集:",logitmodel.score(xx,y))

#4.计算高斯朴素贝叶斯分类器的准确率

print("训练集:",beiyesi.score(xx,y))

#4.计算随机森林分类器的准确率

print("训练集:",rfc.score(xx,y))

#4.计算knn分类器的准确率

print("训练集:",classifier.score(xx,y))

#4.计算AdaBoost分类器准确率

print("训练集:",AB.score(xx,y))

文本挖掘-实战记录(一)新闻文本nmi降维+分类训练相关推荐

  1. 基于朴素贝叶斯和LSTM的两种新闻文本分类方法

    新闻文本分类 文章目录 新闻文本分类 一.项目背景 二.数据处理与分析 三.基于机器学习的文本分类--朴素贝叶斯 1. 模型介绍 2. 代码结构 3. 结果分析 四.基于深度学习的文本分类--LSTM ...

  2. 数据挖掘思维和实战24 实践 5:使用 fatText 进行新闻文本分类

    你好,欢迎来到第 24 课时,这是我们的最后一节实践课,也是我们的数据挖掘思维与实战的最后一节正课.在这节课中,我将为你讲解数据挖掘在自然语言处理领域最典型的应用--文本分类,并带领你一步步解决文本分 ...

  3. 机器学习实战:朴素贝叶斯算法在新闻文本数据上的分类表现

    https://www.toutiao.com/a6647102437532369421/ 2019-01-17 08:01:00 大家好,今天跟大家学习一下通过sklearn的朴素贝叶斯模型实战.前 ...

  4. 【项目实战课】NLP入门第1课,人人免费可学,基于TextCNN的新闻文本分类实战...

    欢迎大家来到我们的项目实战课,本期内容是<基于TextCNN的新闻文本分类实战>. 所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲解,可以 ...

  5. NLP实战-中文新闻文本分类

    目录 1.思路 2.基于paddle的ERINE模型进行迁移学习训练 3.分步实现 3.1 获取数据 (1)数据解压 (2)将文本转成变量,这里为了好计算,我只选了新闻标题做文本分类 3.2 中文分词 ...

  6. 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

    文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...

  7. 【学习笔记】零基础入门NLP - 新闻文本分类实战

    赛题理解   首先要理解赛题的背景及描述--赛题以新闻数据为赛题数据,数据集报名后可见并可下载.赛题数据为新闻文本,并按照字符级别进行匿名处理.整合划分出14个候选分类类别:财经.彩票.房产.股票.家 ...

  8. 零基础入门NLP之新闻文本分类挑战赛——赛题理解

    假期还有两周左右就结束了,正巧,Datawhale联合天池发布了零基础入门NLP的学习,于是报名参加了零基础入门NLP-新闻文本分类. 本人之前刚接触NLP没多久,记录一下学习的历程,供和我一样的小白 ...

  9. 零基础入门NLP - 新闻文本分类

    本文是对阿里云新人竞赛中的"零基础入门NLP - 新闻文本分类"解体过程进行的记录,目前仅使用了textCNN模型进行预测,后续还会考虑使用LSTM进行对比. 赛题数据 赛题以新闻 ...

最新文章

  1. 已知小红今年12岁c语言编程,C语言程序设计第轮复习习题.doc
  2. 为什么c程序里一定要写main函数
  3. K - TimesIsMoney(查询)
  4. apple ii 模拟器 mac_苹果自研芯片Mac价格曝光
  5. layui table勾选框的修改_layui表格(Table)下添加可更新拉选择框select
  6. tp框架操作mysql_Thinkphp框架对数据库的操作(总结)
  7. 怎么手动升级更新ubuntu系统到最新版
  8. BZOJ3108 [cqoi2013]图的逆变换
  9. 【原创工具】蓝牙串口无线烧写STM32程序的工具,支持HC-05和CC2541两种蓝牙模块
  10. 【详解】服务可用性详细说明及其解决方案
  11. Photoshop脚本 删除当前图层
  12. 【项目三、车牌检测+识别项目】三、LPRNet车牌识别网络原理和核心源码解读
  13. ArcGIS server9.3实现根据坐标定位
  14. Python读取两个txt文件内容,重新写到新的txt文件
  15. 计算机xp怎么做备份,简单说说windowsXP中如何进行系统备份
  16. 生日快乐_生日快乐!
  17. Android 常见的透明度颜色值ARGB 半透明 全透明
  18. 【网络安全】利用MSF工具内网复现MS08-067
  19. JavaScript Reflect 学习笔记
  20. C语言----- 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数

热门文章

  1. 世间事,除了生死,哪一件不是闲事
  2. 抽象工厂模式:一个工厂的故事续集
  3. 帷幕的帷是什么意思_被俘的关羽说了什么话,让曹操心甘情愿放走了他?
  4. GAN在短视频中的AI特效实践(PPT演示)
  5. redis笔记——springboot集成redis
  6. 树莓派实现远程网络监控
  7. android沉浸式状态栏 图片背景,Android App 沉浸式状态栏解决方案
  8. Revit二次开发教程提纲
  9. 思岚科技发布SLAMWARE ROS SDK,全面支持ROS系统
  10. 2.1.2 奈奎斯特定理与香农定理