1.获取数据
特征含义、
## 获取数据
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import statsmodels.api as sm #是 Python 中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检验等等的功能
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_table('C:/Users/lb/Desktop/test/earndata3.txt',sep='\t',engine="python",encoding = 'utf-8')
data.columns.values
data.head()
# # 重命名
# data.rename(columns = {'类型':'type','盈利率':'profit','付费率':'pay','活跃率':'active','收入':'income','触达比例':'touch',
# '转化比例':'conves','新增比例':'new','运营费用占比':'operate','服务费用占比':'servicce'},inplace = True)
# data
# 数据框操作,plt.rcParams设置图像细节,如图像大小,线条样式和宽度
# 绘制某两个维度的散点图
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.scatter(data['feature35'],data['收入'])
plt.xlabel('feature35')
plt.ylabel('收入')
plt.show()
2.查看缺失值和填充办法
#查看缺失值
na_num = pd.isna(data).sum()
print(na_num)
#缺失值填充
#fillna()
#df['taixin'] = df['taixin'].fillna(df['taixin'] .mean()) #均值
#df['taixin'] = df['taixin'].fillna(df['taixin'] .mode()) #众数
# df['taixin'] = df['taixin'].interpolate() #插值法
异常值 一般用箱线图
#查看异常值
plt.boxplot(data['feature1'])
plt.show()
Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。 1.直方图和密度图 2.柱状图和热力图 3.设置图形显示效果 4.调色功能
当Pearson相关系数低于0.4,则表明变量之间存在弱相关关系;当Pearson相关系数在0.4~0.6之间,则说明变量之间存在中度相关关系;当相关系数在0.6以上时,则反映变量之间存在强相关关系
.
导出
# 导出为文件
import csv
outputpath='C:/Users/dell/Desktop/cor2.csv'
data_cor.to_csv(outputpath,index=True,header=True)
#绘制各变量之间的散点图
sns.pairplot(data)
plt.show()
#划分测试训练集
from sklearn.model_selection import train_test_split
data_x = data.drop(['收入'],axis=1)
data_y = data['收入']
train_x,test_x,train_y,test_y = train_test_split(data_x,data_y,test_size=0.3,random_state=6)
train_x.head()
3.这里把所有重新恢复成 从 0开始
# #索引恢复
for i in [train_x,test_x]:
i.index = range(i.shape[0])
train_x.head()
导入linear_model模块,然后创建一个线性模型linear_model.LinearRegression,该线性回归模型创建有几个参数(可以通过help(linear_model.LinearRegression)来查看):
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
1、fit_intercept:bool量,选择是否需要计算截距,默认为True,如果中心化了的数据可以选择false
2、normalize:bool量,选择是否需要标准化(中心化),默认为false,为true,表示标准化处理,一般不使用。可以自行使用standerdscaler
3、copy_x: bool量,选择是否复制X数据,默认True,如果否,可能会因为中心化把X数据覆盖
4、n_job:int量,选择几核用于计算,默认1,-1表示全速运转
#建立线性回归模型
from sklearn.linear_model import LinearRegression #线性回归
model = LinearRegression()
model.fit(train_x,train_y)
display(mod