期末大作业

一、boston房价预测

  1.导入包 

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures

import pandas as pd

 
 

  

  2.导入数据集

from sklearn.datasets import load_boston
import numpy as np
boston = load_boston()
df = pd.DataFrame(boston.data)

  

  

  

  3 .训练集与测试集划分

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(boston.data,boston.target,test_size=0.3)

   

  4.线性回归模型:建立13个变量与房价之间的预测模型,并检测模型好坏。

    (1)建立模型

from sklearn.linear_model import LinearRegression

lineR = LinearRegression()
lineR.fit(x_train,y_train)
w = lineR.coef_
b = lineR.intercept_
print("系数为:",w,"截距为:",b)

 

    (2)检测模型好坏

from sklearn.metrics import regression
y_predict = lineR.predict(x_test)     #用boston数据集的数据集来验证特征(y)的预测值
# 计算模型的预测指标
print("预测的均方误差:", regression.mean_squared_error(y_test,y_predict))
print("预测的平均绝对误差:", regression.mean_absolute_error(y_test,y_predict))
# 打印模型的分数
print("模型的分数:",lineR.score(x_test, y_test))

 

 

  5.多项式回归模型:建立13个变量与房价之间的预测模型,并检测模型好坏。

    (1)多项式化

from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
x_poly_train = poly.fit_transform(x_train)
x_poly_test = poly.transform(x_test)

  

  (2)建立模型

Lr = LinearRegression()
Lr.fit(x_poly_train, y_train)

  

  (3)预测

y_predict2 = Lr.predict(x_poly_test)

  (4)检测模型好坏

print("预测的均方误差:", regression.mean_squared_error(y_test,y_predict2))
print("预测的平均绝对误差:", regression.mean_absolute_error(y_test,y_predict2))

  

 

6.比较线性模型与非线性模型的性能,并说明原因。

解:线性算法举应用训练和预测数据集的效率比较高,但最终效果对特征的依赖程度较高,需要数据在特征层面上是线性可分的。线性回归模型是一条直线,而多项式模型是一条平滑的曲线,相较之下,曲线更加贴合样本点的分布,并且误差比线性小,所以非线性模型的性能比线性模型的性能更好。

 

二、中文文本分类

  1. 导包,导入自定义词典  
import os
import jieba
jieba.load_userdict('chinese/caijing.txt')#载入自定义词典
jieba.load_userdict('chinese/gupiao.txt')
jieba.load_userdict('chinese/fangchan.txt')
jieba.load_userdict('chinese/caipiao.txt')

  

  2.定义装载文本与特征的容器

content=[]#存放文本的内容
kinds=[]#存放文本的类别

  

   3.读取停用词表,清理空格

with open(r'chinese/stopsCN.txt', encoding='utf-8') as f: #读取停用词表  
    stopwords = f.read().split('\n')   #清理空格等非法字符  

  

  4.清理非法字符,利用jieba进行分词

def processing(texts):
    # 去掉非法的字符
    texts = "".join([char for char in texts if char.isalpha()])
    # 用jieba分词
    texts = [text for text in jieba.cut(texts,cut_all=True) if len(text) >=2]
    # 去掉停用词
    texts = " ".join([text for text in texts if text not in stopwords]) #去除空格
    #专用词库
    return texts

  

  5.读取文本

def read_txt(path):
    folder_list=os.listdir(path)   #遍历data下的文件名  
    for file in folder_list:
        new_path=os.path.join(path,file) #读取data文件夹的名称,放入new_path  
        files=os.listdir(new_path)#存放data的4个文件夹
        i=1
        #遍历每个txt文件
        for f in files:
            with open(os.path.join(new_path,f),'r',encoding='UTF-8')as f: #打开txt文件
                temp_file=f.read()
            content.append(processing(temp_file)) #将processing函数处理过的文本加进content  
            kinds.append(file)    #遍历file里的特征加进kinds 
            i+=1   #计数器 

  

  6.main函数

if __name__== '__main__':
    path='data' #路径为工作路径的data  
    read_txt(path)

  

   7.用TF-IDF算法进行单词权值的计算

    (1)导包

from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.model_selection import train_test_split

    

    (2)TF-IDF算法

tfidf= TfidfVectorizer()
x_train,x_test,y_train,y_test=train_test_split(content,kinds,test_size=0.2)  #划分测试集/训练集  
X_train=tfidf.fit_transform(x_train)    #训练模型并转化训练集,计算权值 
X_test=tfidf.transform(x_test)        #利用TF-IDF算法v计算权值 

  

  8.构建贝叶斯模型

    (1)导包

from sklearn.naive_bayes import MultinomialNB #用于离散特征分类,文本分类单词统计,以出现的次数作为特征值

  

    (2)建立模型

mulp=MultinomialNB ()   #建立模型  
mulp_NB=mulp.fit(X_train,y_train)  #训练模型  

  

    (3)训练模型

y_predict=mulp.predict(X_test)

  

  9.对模型进行预测

y_predict=mulp.predict(X_test)

  

  10.从sklearn.metrics里导入classification_report做分类的性能报告

    (1) 导包

from sklearn.metrics import classification_report 

  

    (2)输出模型预测

print('模型的准确率为:', mulp.score(X_test, y_test)) 
print('模型评价:\n',classification_report(y_test, y_predict))

  

  

模型结果:

 

模型的准确率为: 0.924384511831

模型评价:

              precision    recall  f1-score   support

 

         彩票       0.99      0.97      0.98      1526

         房产       0.97      0.84      0.90      4033

         股票       0.91      0.99      0.95     30700

         财经       0.95      0.69      0.80      7568

 

avg / total       0.93      0.92      0.92     43827

 

 

 

转载于:https://www.cnblogs.com/czx98/p/10130574.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值