数据正态分布化 + 基于回归算法的房价预测(含python代码)

本文用到的美国房屋数据,数据介绍详见我的上一篇文章:

链接:https://pan.baidu.com/s/1wrkzFF87A_Emgid_s7K3aA
提取码:2j77 

内含两个文件:

data_train.csv:训练集数据,包含房价等81个指标;

data_test.csv:测试集数据,不包含房价;

文章目录

前言

一、数据预处理

1. 删除异常值

2. 填补缺失值

3. 转换数据类型

4. 建立值与类别的映射 

二、对房价进行正态分布化处理:

         第一步:在原数据的柱状图上添加正态分布概率密度曲线和核密度估计曲线;

         第二步:对房价进行正态分布化处理;

         第三步:添加一列总面积并计算偏度;

         第四步:随后对偏度大的列数据进行BOX-COX转换,改善数据的正态性和对称性;

         第五步:对数据进行独热编码;

三、使用多个回归预测算法进行房价预测

1. 导入包和数据

2. 定义模型

3. 定义训练数据和计算模型均方根误差的方法

4. 通过均方误差评估各模型效果

5. 模型应用(预测)


前言

紧接上一篇文章,本文针对数据进行了正态化处理,应用了Lasso、KernelRidge、ElasticNet、GradientBoostingRegressor、XGBRegressor等回归模型进行房价预测。

数据长这样,数据集的具体解释和分析详见我的上一篇文章


一、数据预处理

导入包:

#不显示警告
import warnings
warnings.filterwarnings('ignore')#数据处理,数据分析
import numpy as np
import pandas as pd#统计计算相关的工具包
import math
from scipy import stats
from scipy.stats import norm#画图相关的工具包
import seaborn
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline

1. 删除异常值

df_train = pd.read_csv('data_train.csv',encoding='gbk')#读入数据文件
# 统计各属性的缺失值个数,并按照降序排序
total_isnull = df_train.isnull().sum().sort_values(ascending=False)
# 统计各行总数
total_number_rows=len(df_train)
# 统计缺失值占比
percent = (total_isnull/total_number_rows)*100
# 拼接两列
missing_data = pd.concat([total_isnull, percent], axis=1, keys=['缺失值数量', '百分比'])
# 查看前20行
missing_data.head(20)

# 读取训练集数据
train = pd.read_csv('data_train.csv',encoding='gbk')
# 读取测试集数据
test = pd.read_csv('data_test.csv',encoding='gbk')
# 查看训练集数据形状
print("The train data size before dropping Id feature is : (%d %d)" %(train.shape[0],test.shape[1]))
# 查看测试集数据形状
print("The test data size before dropping Id feature is : (%d %d)\n" %(test.shape[0],test.shape[1]))
# 删除两个数据集中编号属性列
train.drop("编号", axis = 1, inplace = True)
test.drop("编号", axis = 1, inplace = True)

查看离群点,作居住面积与房价的散点图,发现右下角存在离群点。 

# 设置图片样式
plt.figure(figsize=(16, 8),dpi=600)
# 绘制“住房面积” “房价散点图”
fig = seaborn.scatterplot(train['居住面积'],train['房价'])

删除离群点,再次作居住面积与房价的散点图,观察离群点是否已经被删除。 

train = train.drop(train[(train['居住面积']>4000) & (train['房价']<300000)].index)#删除离群点plt.figure(figsize=(16, 8),dpi=600)#设置图片大小
fig = seaborn.scatterplot(train['居住面积'],train['房价'])#作散点图

2. 填补缺失值

#计算所有特征缺失值占比
all_data_na = (all_data.isnull().sum() / len(all_data)) * 100#去掉不包含缺失值的属性,并对剩下的属性按照缺失值比例降序排序,存下排名前10的属性
all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)[:10]
#转换成DataFrame的格式
missing_data = pd.DataFrame({'缺失值占比' :all_data_na})
#展示
missing_data

填补缺失值。根据特征的现实意义,采用”None“进行填充:

cols = ('泳池质量','车库类型', '车库室内装修', '车库质量', '车库条件','地下室的高度','地下室的条件','花园层地下室墙','地下室基底质量','地下室第二成品区质量','砌体饰面型','砌体饰面型','杂项功能','通道入口的类型','栅栏的质量','壁炉质量','建筑类','实用工具') #将需要转换的列存入元组                     for col in cols:all_data[col] = all_data[col].fillna('None')all_data['泳池质量']

#先利用groupby函数将数据按照“街区”进行分组,取出‘街道连接距离’这一列
list(all_data.groupby('街区')['街道连接距离'])[0:3]cols = ('车库修筑年份','车库规模','车库车位数量','地下室基底面积','地下室第二成品区面积','未使用的地下室面积','地下室总面积','地下室全浴室','地下室半浴室','砌体饰面面积','砌体饰面面积') #将需要转换的列存入元组               
for col in cols:all_data[col] = all_data[col].fillna(0)cols = ('一般分区','电气系统','厨房的品质','第一外部材料','第二外部材料','家庭功能评级','销售类型')  #将需要转换的列存入元组                
for col in cols:all_data[col] = all_data[col].fillna(all_data[col].mode()[0]) 

此时再检查缺失值,发现已经全部填补完全:

all_data_na = (all_data.isnull().sum() / len(all_data)) * 100#计算缺失值比例
all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)#去掉不包含缺失值的属性并对剩下的属性排序
missing_data = pd.DataFrame({' 缺失值占比' :all_data_na})#转换成数据框格式
missing_data.head()#显示前几行

3. 转换数据类型

转换数据类型,方便后期操作:

all_data['建筑类'] = all_data['建筑类'].apply(str)#将数据转成字符串的形式
all_data['总体状况评价'] = all_data['总体状况评价'].apply(str)
all_data['销售年'] = all_data['销售年'].apply(str)
all_data['销售月'] = all_data['销售月'].apply(str)

4. 建立值与类别的映射 

from sklearn.preprocessing import LabelEncoder
cols = ('壁炉质量', '地下室的高度', '地下室的条件', '车库质量', '车库条件', '外部材料质量', '外部材料条件','加热质量', '泳池质量', '厨房的品质', '地下室基底质量', '地下室第二成品区质量', '家庭功能评级', '栅栏的质量', '花园层地下室墙', '车库室内装修', '坡的财产','财产的类型', '车道', '道路类型', '通道入口的类型', '中央空调', '建筑类', '总体状况评价', '销售年', '销售月')#将需要转换的列存入元组                      for c in cols:myLabel = LabelEncoder()#创建labelEncode对象myLabel.fit(list(all_data[c].values))#建立值与类别的映射关系all_data[c] = myLabel.transform(list(all_data[c].values))#将每一个值按照映射关系进行转换print('Shape all_data: (%d,%d)'%(all_data.shape[0],all_data.shape[1]))    

二、对房价进行正态分布化处理:

第一步:在原数据的柱状图上添加正态分布概率密度曲线和核密度估计曲线;

(mu, sigma) = norm.fit(train['房价'])#计算变换前的均值和方差
print("\n mu = %.2f and sigma = %.2f\n" %(mu,sigma))#打印均值和方差#画出变换前房价的核密度估计曲线,拟合出的生态分布密度概率曲线
plt.figure(figsize=(16, 8),dpi=600)#设置图片大小,分辨率
plt.ylabel('概率密度')#设置纵轴标签
plt.title('房价分布')#设置图片标题
#第一个参数为房价数据,fit=norm代表绘制生态分布密度概率曲线(黑色曲线),kde=True代表绘制核密度估计曲线(蓝色曲线)
#fit_kws,kde_kws,hist_kws分别可以设置黑色曲线,蓝色曲线和直方图的图例标签。
seaborn.distplot(train['房价'] ,fit=norm,kde=True,fit_kws={"label":"正态分布概率密度曲线"},kde_kws={"label":"核密度估计曲线"},hist_kws={"label":"房价频数"})#绘图
plt.legend()#设置图例plt.figure(figsize=(16, 8),dpi=600)#设置图片大小
res = stats.probplot(train['房价'], plot=plt)#计算概率图的分位数,plt是绘图对象,plot=plt显示该图

 

上述结果解释: 第一张图中的蓝色直方图代表对应区间房价的频数,蓝色曲线为和核密度估计曲线,黑色的曲线代表以房价的均值和方差拟合出的正态分布概率密度曲线。可以看出,观测数据的分布与正态分布有一定差距,故应对观测数据进行正态分布化处理。

第二张图为Q—Q图。

蓝色的作图方法:1、找出标准正态分布的所有分位点作为X轴刻度值;2、找出与X轴上所有分位点对应的样本分位点,以标准正态分布分位点为横坐标,样本分位点为纵坐标,可以做出Q-Q图中蓝色的点;

红色线的作图方法:1、以样本的均值和方差生成一组正态分布样本(对应第一张图中黑色曲线);2、找出与X轴上所有分位点对应的正态分布样本的分位点,以标准正态分布分位点为横坐标,正态分布分位点为纵坐标,可以做出Q-Q图红色直线。

结论:蓝色的点越贴近直线,越说明观测数据的分布贴近正态分布

对房价进行正态分布化处理,计算变换后的均值和方差,作频数直方图、拟合后的正态分布概率密度曲线、Q-Q图。

第二步:对房价进行正态分布化处理;

train["房价"] = np.log1p(train["房价"])#对数变换ln(1+x)(mu, sigma) = norm.fit(train['房价'])#计算新的均值和方差
print("\n mu = %.2f and sigma = %.2f\n" %(mu,sigma))#打印均值和方差plt.figure(figsize=(16, 8),dpi=600)#设置图片大小
plt.ylabel('概率密度')#设置纵轴标签
plt.title('房价分布')#设置图片标题
#第一个参数为房价数据,fit=norm代表绘制生态分布密度概率曲线(黑色曲线),kde=True代表绘制核密度估计曲线(蓝色曲线)
#fit_kws,kde_kws,hist_kws分别可以设置黑色曲线,蓝色曲线和直方图的图例标签。
seaborn.distplot(train['房价'] ,fit=norm,kde=True,fit_kws={"label":"正态分布概率密度曲线"},kde_kws={"label":"核密度估计曲线"},hist_kws={"label":"房价频数"})#绘图
plt.legend()#设置图例plt.figure(figsize=(16, 8),dpi=600)#设置图片大小
res = stats.probplot(train['房价'], plot=plt)#画出Q-Q图

 

上述结果解释:正态分布化处理后,核密度估计曲线与拟合出的正态分布概率密度曲线更加贴近,Q-Q图中蓝色的点相比处理前更加贴近直线。因此可以认为经过对数变换后的房价数据近似服从正态分布,可以用于接下来的回归任务。

第三步:添加一列总面积并计算偏度;

#增加一个新特征总面积
all_data['总面积'] = all_data['地下室总面积'] + all_data['一楼面积'] + all_data['二楼面积']from scipy.stats import norm, skew
numeric_feats = all_data.dtypes[all_data.dtypes != "object"].index#找出所有数值型属性的索引值
skewed_feats = all_data[numeric_feats].apply(lambda x: skew(x)).sort_values(ascending=False)#计算所有数值型属性的偏度值
print("\n所有数值型特征的偏度为: \n")#打印
skewness = pd.DataFrame({'偏度值' :skewed_feats})#转换成数据框
skewness.head(10)#查看前十行

第四步:随后对偏度大的列数据进行BOX-COX转换,改善数据的正态性和对称性;

skewness = skewness[abs(skewness) > 0.75]#保留偏度的绝对值大于0.75的特征
print("总共有 %d 个特征需要进行BOX-COX变换" %skewness.shape[0])#打印有多少个特征需要进行变换
from scipy.special import boxcox1p
skewed_features = skewness.index#将特征名称保存在skewed_features中
lam = 0.15#一般情况下0.15为经验值。
for feat in skewed_features:all_data[feat] = boxcox1p(all_data[feat], lam)#进行BOX-COX转换

第五步:对数据进行独热编码;

使用独热编码来解决类别型数据的离散值问题,方便分析和预测,独热编码的具体原理在此不做详细介绍(就是使用0和1标记数据类别);

all_data = pd.get_dummies(all_data)#热编码
print(all_data.shape)#打印数据形状。

三、使用多个回归预测算法进行房价预测

1. 导入包和数据

from sklearn.pipeline import make_pipeline#级联其他的函数工具
from sklearn.preprocessing import RobustScaler#自动处理离群点的函数
from sklearn.linear_model import ElasticNet, Lasso#弹性回归,套索回归。
from sklearn.kernel_ridge import KernelRidge#核岭回归
from sklearn.ensemble import GradientBoostingRegressor#梯度提升回归
import xgboost as xgb#xgb包中包括极端梯度提升回归模型:XGBRRegressor
#自定义的集成模型类需要寄存sklearn中的三个类:估计器的基类,转换器的混合类,回归估计器的混合类,clone是产生克隆估计器的函数
from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin, clone
#用于划分数据集,计算模型得分的函数
from sklearn.model_selection import KFold, cross_val_score,train_test_splittrain = all_data[:ntrain]#定义训练集
test = all_data[ntrain:]#定义测试集

2. 定义模型

共使用5种回归模型,分别为Lasso、KernelRidge、ElasticNet、GradientBoostingRegressor、XGBRegressor模型。

Lasso模型是在线性回归模型的基础上加入了L1正则化的回归方法;

KernelRidge 带有核函数的岭回归模型,岭回归也是在线性回归模型的基础上加入了12正则化的回归方法;

ElasticNet 是套索回归和岭回归的混合模型,同时引入了L1和L2正则化项;

GradientBoostingRegressor 梯度提升回归模型,是一种袋成回归算法;

XGBRegressor 极端梯度提升回归模型,是在梯度提升回归慕础上经过优化的集成回归算法;

#alpha代表正则化惩罚力度,random_state指随机种子
#正则化项为alpha*//w//_l
Lasso = Lasso(alpha =0.0005, random_state=0)#alpha代表正则化器罚力度
#正则化项为0.5xalphax//w// 2 2
#kernel=polynomial”指核函数的类型为多项式核函数,K(xxi)=“x*xi)+r)的d次方,degree指poly核中参数d 
KRR = KernelRidge(alpha=0.6, kernel='polynomial', degree=2)#alpha代表正则化惩罚力度,randomstate指随战种子
#正则化项为alpha xll ratio & //w// 1 +05 xalpha a (l -ll ratio) a //w// 2 2
ENet = ElasticNet(alpha=0.0005, l1_ratio=.9, random_state=0)#nestimators值弱学习器的数目,learningrate值学习率,maxdep场指每个学习器的最大深度:
#max features特征子集中的特征个数,maxfeatures=“sart’代表取特征总数的开方:randomstate指随机种子
GBR = GradientBoostingRegressor(n_estimators=3000, learning_rate=0.05,max_depth=4, max_features='sqrt', random_state =0)#nestimators代表指弱学习器的数目:learningrate指学习率:maxdept指树的最大深度
#regalpha指权重的LI正则化项:reglambda指权重12正则化项:
XGBR = xgb.XGBRegressor(n_estimators=2200,learning_rate=0.05, max_depth=3, reg_alpha=0.4640, reg_lambda=0.8571)

3. 定义训练数据和计算模型均方根误差的方法

class AveragingModels(BaseEstimator, RegressorMixin, TransformerMixin):def __init__(self, models):self.models = models#定义原始模型的克隆来训练数据。    def fit(self, X, y):self.models_ = [clone(x) for x in self.models]#训练克隆模型for model in self.models_:model.fit(X, y)return self#对克隆模型进行预测并求平均def predict(self, X):#column_stack将3个n*1的矩阵拼接成n*3的矩阵predictions = np.column_stack([model.predict(X) for model in self.models_])return np.mean(predictions, axis=1)#axis=1:压缩列,对各行求均值,返回n*1矩阵。  class StackingAveragedModels(BaseEstimator, RegressorMixin, TransformerMixin):def __init__(self, base_models, meta_model, n_folds=5):self.base_models = base_modelsself.meta_model = meta_modelself.n_folds = n_folds#定义原始模型的克隆来训练数据def fit(self, X, y):self.base_models_ = [list() for x in self.base_models]self.meta_model_ = clone(self.meta_model)kfold = KFold(n_splits=self.n_folds, shuffle=True, random_state=0)#训练克隆的基础模型(第一阶段的模型),将产生的预测结果存入out_of_fold中,利用out_of_fold中的数据训练元模型(第二阶段的模型)out_of_fold_predictions = np.zeros((X.shape[0], len(self.base_models)))for i, model in enumerate(self.base_models):for train_index, holdout_index in kfold.split(X, y):instance = clone(model)self.base_models_[i].append(instance)instance.fit(X[train_index], y[train_index])y_pred = instance.predict(X[holdout_index])out_of_fold_predictions[holdout_index, i] = y_pred  #现在将out_of_fold里的数据作为特征,拿到元模型(第二阶段)的模型中进行拟合self.meta_model_.fit(out_of_fold_predictions, y)return self#用所有的基础模型(第一阶段的模型)预测测试集上的数据,将预测结果的平均值拿到元模型中进行最后的预测,返回的是一个n*l的矩阵def predict(self, X):#base_models是一个3*5的二维列表,如下#每一行代表一个基模型5次交叉验证生成的5个模型,一共有三个基模型,所以有三行#np.column_stack([model.predict(X) for model in base_models]).mean(axis=1)对每一行5个模型的预测结果求均值#外层的np.column_stack将三个基模型的预测结果拼接成n*3的矩阵#因此,meta_features是一个n*3的矩阵,每一列代表一个基模型5次交叉验证的预测的平均值,共有3个基模型所以有三列meta_features = np.column_stack([np.column_stack([model.predict(X) for model in base_models]).mean(axis=1)for base_models in self.base_models_ ])return self.meta_model_.predict(meta_features)n_folds = 5#交叉验证的折数
def rmse_cv(model):#编写函数,计算各个模型的均方根误差kf = KFold(n_folds, shuffle=True, random_state=0).get_n_splits(train.values)#划分交叉验证需要用到的数据集#scoring="neg_mean_squared_error"是计算均方差回归损失,返回值是负值,故要在函数外添加负号,再开平方,得到均方根误差rmse= np.sqrt(-cross_val_score(model, train.values, y_train, scoring="neg_mean_squared_error", cv = kf))#计算均方根误差return(rmse)

4. 通过均方误差评估各模型效果

单独评估各回归模型: 

 综合评估模型组合:

5. 模型应用(预测)

 选用均方误差最小的stacked_averaged_models4进行应用,预测测试集的房价数据:

stacked_averaged_models4.fit(np.array(train),y_train)
y_pred=stacked_averaged_models4.predict(test)y_pred_real=[]
for i in range(len(y_pred)):y_pred_real_i=pow(math.exp(1),y_pred[i])-1y_pred_real.append(y_pred_real_i)plt.figure(figsize=(20,8),dpi=600)
plt.plot(y_pred_real[0:200],'bo')
plt.xlabel('样本编号')#设置横轴标签
plt.ylabel('预测房价')#设置纵轴标签plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37485.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kaggle--房价预测

房价预测 目录 一、认识数据二、定性分析 2.1 属性的意义2.2 属性分析 三、缺失值处理 3.1 缺失值举例3.2 缺失值统计3.3 填充缺失值3.4 格式转换 四、特征分析 4.1 房价分析4.2 房价属性的关系4.3 相关性4.5 特征选取 五、回归前的准备 5.1 特征向量化5.2 测试集预处理 六、回…

基于python的房价可视化预测系统

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86774405 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86774405 基于python实现的房价的可视化预测系统 目录 面向用户(买房者、卖房者) 1 面向开发者&#xff08;数据挖…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据&#xff1a;从入门到精通 如果你是一名数据分析师或者工程师&#xff0c;那么你一定要学会使用Python抓取数据。Python是一门简单易学、功能强大的编程语言&#xff0c;它具有丰富的第三方库和工具&#xff0c;使得数据抓取变得非常简单。 本篇文章将从入门到…

chatgpt赋能python:Python抓取网络数据的终极指南

Python抓取网络数据的终极指南 随着互联网的迅速发展&#xff0c;抓取网络数据成为了许多公司和个人用Python进行数据分析、机器学习等任务不可或缺的技能。本文将介绍如何使用Python抓取网络数据。 什么是网络抓取&#xff1f; 网络抓取是指通过网络爬虫程序&#xff0c;自…

chatgpt赋能python:Python如何获取数据:从基础到实战

Python 如何获取数据&#xff1a;从基础到实战 Python 是数据科学、机器学习领域的重要工具之一&#xff0c;如何获取数据是使用 Python 的重要一步。在本文中&#xff0c;我们将介绍从基础到实战 Python 如何获取数据。 1. 爬虫 1.1 爬虫的作用 爬虫是一种自动获取网站信息…

富人越富,穷人越穷,我为什么反对PoS

作者 | Hugo Nguyen 编译 | Guoxi 据摩根士丹利年初报告&#xff0c;2017年比特币挖消耗的电力与中东国家卡塔尔年耗电相当&#xff0c;预计2018年的电力需求可能会达到2017年的三倍以上。 大量的电力消耗也带来了很多争议&#xff0c;很多人都尝试在保证安全性的前提下改进共…

低成本开源聊天机器人Vicuna:可达到ChatGPT/Bard 90%以上水平

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013) 大型语言模型 (LLM) 的快速发展彻底改变了聊天机器人系统&#xff0c;从而实现了前所未有的智能水平&#xff0c;譬如 OpenAI 的 ChatGPT。但 ChatGPT 的训练和架构细节仍不清楚&#xff0c;阻碍了该领域的研究和开源…

看看你经常是穷人的思维还是富人的思维:

1、自我认知 穷人&#xff1a;很少想到如何去赚钱和如何才能赚到钱&#xff0c;认为自己一辈子就该这样&#xff0c;不相信会有什么改变。 富人&#xff1a;骨子里就深信自己生下来不是要做穷人&#xff0c;而是要做富人&#xff0c;他有强烈的赚钱意识&#xff0c;这也是他血液…

如何解决电脑所有浏览器都访问不了,但是微信qq都能上的问题

微信能上,但是浏览器用不了, 什么原因呢,一开始以为是学校检测到自己的路由器了,然后开始疯狂倒腾路由器,不断重启,不断重置密码,后来发现都不起作用....................... 从一开始自己就没有想到是配置的问题,因为浏览器是突然就不能用的,自己又没动过电脑的设置,避开了这…

网络正常,qq、微信等其他能正常使用但浏览器无法打开网页

最近遇到电脑网络正常,除了所有浏览器(360、ie、chrome、搜狗等等)无法打开网页,qq、微信以及爱奇艺等其他连网软件都可以正常使用。 如图: 这样的原因一般是你之前使用了代理服务器了,比如使用电脑开wifi、墙了。之后电脑没有自动修改回来,所以才导致这样。 解决方法…

Chrome无法访问网页(在此情况下,Firefox可以访问网页,QQ可以上网)

Chrome无法访问网页 已尝试以下方法&#xff1a; 重置Chrome&#xff0c;恢复原始设置&#xff08;有些插件可能会导致无法正常打开网页&#xff0c;类似各种梯子&#xff09;&#xff0c;无效在cmd上使用netsh winsock reset,重启电脑&#xff0c;无效使用QQ管家修复功能&am…

qq、微信能打开,网页打不开的解决办法。

昨天下载了VS2022之后。就一直打不开B站&#xff0c;坚信是我自己的我问题。今早还打不开&#xff0c;然后搜了很多办法&#xff0c;原理是那个原理&#xff0c;但是奈何无法成功实践&#xff0c;请教了实验室同学后&#xff0c;终于解决。具体流程如下&#xff1a; 我是 win1…

电脑能打开微信,但是访问不了百度,打不开网页,打不开浏览器!

电脑能打开微信&#xff0c;但是访问不了百度&#xff0c;打不开网页&#xff0c;打不开浏览器&#xff01; 返回导航页问题现象&#xff1a;解决方案&#xff1a;方案一&#xff1a;方案二&#xff1a; 返回导航页 返回导航页 问题现象&#xff1a; 电脑能打开微信&#xff…

QQ、微信可以正常访问通讯,浏览器无法打开网页

问题描述 电脑网络异常&#xff0c;除了浏览器&#xff08;360、chrome、搜狗等等&#xff09;无法打开网页&#xff0c;qq、微信等其他连网软件都可以正常使用。 问题分析 出现这样的原因一般是之前设置了代理服务器&#xff0c;后续没有关闭&#xff0c;导致浏览器还是走代…

大模型新势力:IDEA研究院张家兴入局创业,沈向洋任顾问,首轮估值20亿

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 大模型创业江湖&#xff0c;又来了两位重磅大牛。 张家兴&#xff0c;粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;讲席科学家、认知计算与自然语言中心负责人&#xff0c;被曝已经启动了创业项目&#xff0c;而他站…

大模型新势力入局:IDEA研究院首席科学家创业,沈向洋院士任顾问,首轮估值20亿...

来源&#xff1a;量子位 大模型创业江湖&#xff0c;又来了两位重磅大牛。 张家兴&#xff0c;粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;讲席科学家、认知计算与自然语言中心负责人&#xff0c;被曝已经启动了创业项目&#xff0c;而他站在他身后&#xf…

预计欧元近期将“绝境大反攻”

纽约汇市11日&#xff0c;美元全线下滑&#xff0c;兑欧元和日圆触及七周低点&#xff0c;因避险需求降温&#xff0c;美元在稳步走强数月后投资人开始在年底前锁定获利。 美元兑其他主要货币自12月起便一路下滑&#xff0c;主要是受年末特有的低水平流动性以及年末清仓操作影响…

彻底弄懂 https 原理本质(三)加密漏洞

一、https加密&#x1f510;过程&#xff0c;上期知识回顾 小明&#x1f466;和小花&#x1f467;为了安全高效的发情书&#xff0c;采用对称加密方式。聪明的老王&#x1f436;盗取对称加密的密钥S&#x1f511; 。小明&#x1f466;想到了非对称加密方式&#xff0c;于是就生…

通过爱情故事,彻底弄懂 https 原理本质(二)加密过程

一、加密知识回顾 单向加密 不可逆&#xff0c;只要输入的内容一样&#xff0c;输出的密文一定是一样的&#xff0c;有任何修改&#xff0c; 产生的密文都是不同的。例如&#xff0c;md5。 对称加密 加密和解密使用同一把密钥&#xff0c;加密解密速度特别快。例如&#xff0c;…

中国广电即将放号,或代表着中国移动反攻,联通先慌了

近期中国四大运营商之一的中国联通被用户指责乱扣费&#xff0c;这或许是这家企业面对着一个新对手即将开展移动通信业务引发慌乱导致的后果。中国广电即将在517后开始放号&#xff0c;目前正紧锣密鼓的准备当中&#xff0c;由于它与中国移动共建700MHz 5G网络&#xff0c;同时…