kaggle竞赛房价预测--排名前4%

目录

  • 1. 数据读取
  • 2. 数据处理
  • 3. 建模
    • 基本模型
      • 1)LASSO回归:
      • 2)Elastic Net Regression(弹性网回归):
      • 3)Kernel Ridge Regression(核岭回归) :
      • 4)Gradient Boosting Regression (梯度增强回归):
      • 5)XGBoost :
      • 6)LightGBM :
    • 基本模型得分
    • 叠加模型
      • 最简单的叠加方法:平均基本模型
      • 不那么简单的叠加:添加元模型
    • 最后训练和预测

Stacked Regressions : Top 4% on LeaderBoard

  • Pedro Marcelino用Python进行全面的数据探索:伟大的、非常有动机的数据分析 Julien Cohen
  • Solal在Ames数据集回归研究中的应用:深入研究线性回归分析的彻底特征,但对初学者来说非常容易理解。
  • Alexandru Papiu的正则化线性模型:建模和交叉验证的最佳初始内核

选用堆叠模型,构建了两个堆栈类(最简单的方法和不太简单的方法)。
特征工程优点:

  • 通过按顺序处理数据来估算缺失值
  • 转换一些看起来很明确的数值变量
  • 编码某些类别变量的标签,这些变量的排序集中可能包含信息
  • 倾斜特征的Box-Cox转换(而不是log转换):在排行榜和交叉验证上结果较好
  • 获取分类特征的虚拟变量。

选择多个基本模型(主要是基于sklearn的模型以及sklearn API的DMLC的XGBoost和微软的LightGBM),先交叉验证,然后叠加/集成。关键是使(线性)模型对异常值具有鲁棒性。这改善了LB和交叉验证的结果。

1. 数据读取

#import some necessary librairiesimport numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
%matplotlib inline
import matplotlib.pyplot as plt  # Matlab-style plotting
import seaborn as sns
color = sns.color_palette()
sns.set_style('darkgrid')
import warnings
def ignore_warn(*args, **kwargs):passwarnings.warn = ignore_warn #ignore annoying warning (from sklearn and seaborn)from scipy import stats
from scipy.stats import norm, skew #for some statisticspd.set_option('display.float_format', lambda x: '{:.3f}'.format(x)) #Limiting floats output to 3 decimal pointsfrom subprocess import check_output
print(check_output(["ls", "../input"]).decode("utf8")) #check the files available in the directory

在这里插入图片描述
读取数据

#读取数据
train = pd.read_csv('../input/train.csv')
test = pd.read_csv('../input/test.csv')

查看前5行

train.head(5)

在这里插入图片描述

test.head(5)

在这里插入图片描述
检查样本和特征的数量

#check the numbers of samples and features
print("The train data size before dropping Id feature is : {} ".format(train.shape))
print("The test data size before dropping Id feature is : {} ".format(test.shape))#Save the 'Id' column
train_ID = train['Id']
test_ID = test['Id']#Now drop the  'Id' colum since it's unnecessary for  the prediction process.
train.drop("Id", axis = 1, inplace = True)
test.drop("Id", axis = 1, inplace = True)#check again the data size after dropping the 'Id' variable
print("\nThe train data size after dropping Id feature is : {} ".format(train.shape)) 
print("The test data size after dropping Id feature is : {} ".format(test.shape))

在这里插入图片描述

2. 数据处理

异常值

fig, ax = plt.subplots()
ax.scatter(x = train['GrLivArea'], y = train['SalePrice'])
plt.ylabel('SalePrice', fontsize=13)
plt.xlabel('GrLivArea', fontsize=13)
plt.show()

在这里插入图片描述
右下角看到两个巨大的grlivrea,价格很低。

#Deleting outliers
train = train.drop(train[(train['GrLivArea']>4000) & (train['SalePrice']<300000)].index)#Check the graphic again
fig, ax = plt.subplots()
ax.scatter(train['GrLivArea'], train['SalePrice'])
plt.ylabel('SalePrice', fontsize=13)
plt.xlabel('GrLivArea', fontsize=13)
plt.show()

在这里插入图片描述
注:

异常值的移除是安全的。我们决定删除这两个,因为它们是非常巨大和非常糟糕的(非常大的面积,非常低的价格)。
训练数据中可能还有其他异常值。但是,如果测试数据中也存在异常值,那么删除所有这些异常值可能会严重影响我们的模型。这就是为什么,我们不把它们全部删除,而只是设法使我们的一些模型在它们上更加健壮。可以参考模型部分。

目标变量
需要预测SalePrice,所以先分析它

sns.distplot(train['SalePrice'] , fit=norm);# Get the fitted parameters used by the function
(mu, sigma) = norm.fit(train['SalePrice'])
print( '\n mu = {:.2f} and sigma = {:.2f}\n'.format(mu, sigma))#Now plot the distribution
plt.legend(['Normal dist. ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)],loc='best')
plt.ylabel('Frequency')
plt.title('SalePrice distribution')#Get also the QQ-plot
fig = plt.figure()
res = stats.probplot(train['SalePrice'], plot=plt)
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目标变量向右倾斜。由于(线性)模型喜欢正态分布的数据,我们需要转换这个变量,使其更为正态分布。

目标变量的对数变换

#We use the numpy fuction log1p which  applies log(1+x) to all elements of the column
train["SalePrice"] = np.log1p(train["SalePrice"])#Check the new distribution 
sns.distplot(train['SalePrice'] , fit=norm);# Get the fitted parameters used by the function
(mu, sigma) = norm.fit(train['SalePrice'])
print( '\n mu = {:.2f} and sigma = {:.2f}\n'.format(mu, sigma))#Now plot the distribution
plt.legend(['Normal dist. ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)],loc='best')
plt.ylabel('Frequency')
plt.title('SalePrice distribution')#Get also the QQ-plot
fig = plt.figure()
res = stats.probplot(train['SalePrice'], plot=plt)
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特征工程

连接训练集和测试集

ntrain = train.shape[0]
ntest = test.shape[0]
y_train = train.SalePrice.values
all_data = pd.concat((train, test)).reset_index(drop=True)
all_data.drop(['SalePrice'], axis=1, inplace=True)
print("all_data size is : {}".format(all_data.shape))

在这里插入图片描述
缺失值

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)[:30]
missing_data = pd.DataFrame({'Missing Ratio' :all_data_na})
missing_data.head(20)

在这里插入图片描述

f, ax = plt.subplots(figsize=(15, 12))
plt.xticks(rotation='90')
sns.barplot(x=all_data_na.index, y=all_data_na)
plt.xlabel('Features', fontsize=15)
plt.ylabel('Percent of missing values', fontsize=15)
plt.title('Percent missing data by feature', fontsize=15)

在这里插入图片描述
在这里插入图片描述
相关性

#Correlation map to see how features are correlated with SalePrice
corrmat = train.corr()
plt.subplots(figsize=(12,9))
sns.heatmap(corrmat, vmax=0.9, square=True)

在这里插入图片描述
估算缺失值
我们通过依次处理缺失值的特征来估算它们

  • PoolQC:NA表示“没有泳池”。这是有道理的,因为丢失价值的比例很高(+99%),而且大多数房子根本没有游泳池
all_data["PoolQC"] = all_data["PoolQC"].fillna("None")
  • MiscFeature : NA 表示“没有混合特性”
all_data["MiscFeature"] = all_data["MiscFeature"].fillna("None")
  • Alley : NA 表示“没有巷子通道”
all_data["Alley"] = all_data["Alley"].fillna("None")
  • Fence : NA 表示“没有围栏”
all_data["Fence"] = all_data["Fence"].fillna("None")
  • FireplaceQu : NA 表示“没有壁炉”
all_data["FireplaceQu"] = all_data["FireplaceQu"].fillna("None")
  • LotFrontage : 由于与房产相连的每条街道的面积很可能与其附近的其他房屋面积相似,因此我们可以通过该街区的中间地块面积来填充缺失值。
#Group by neighborhood and fill in missing value by the median LotFrontage of all the neighborhood
all_data["LotFrontage"] = all_data.groupby("Neighborhood")["LotFrontage"].transform(lambda x: x.fillna(x.median()))
  • GarageType, GarageFinish, GarageQual and GarageCond : 用“None”代替缺失值
for col in ('GarageType', 'GarageFinish', 'GarageQual', 'GarageCond'):all_data[col] = all_data[col].fillna('None')
  • GarageYrBlt, GarageArea and GarageCars :将缺失数据替换为0(因为没有车库=此类车库中没有汽车。)
for col in ('GarageYrBlt', 'GarageArea', 'GarageCars'):all_data[col] = all_data[col].fillna(0)
  • BsmtFinSF1, BsmtFinSF2, BsmtUnfSF, TotalBsmtSF, BsmtFullBath and BsmtHalfBath : 由于没有地下室,缺失值值可能为零
for col in ('BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF','TotalBsmtSF', 'BsmtFullBath', 'BsmtHalfBath'):all_data[col] = all_data[col].fillna(0)
  • BsmtQual, BsmtCond, BsmtExposure, BsmtFinType1 and BsmtFinType2 :对于所有这些与地下室相关的分类特征,NaN意味着没有地下室。
for col in ('BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2'):all_data[col] = all_data[col].fillna('None')
  • MasVnrArea and MasVnrType : NA 很可能意味着这些房子没有砖石饰面。我们可以为区域填充0,为类型填充None
all_data["MasVnrType"] = all_data["MasVnrType"].fillna("None")
all_data["MasVnrArea"] = all_data["MasVnrArea"].fillna(0)
  • MSZoning (一般分区分类):“RL”是最常见的值。所以我们可以用“RL”填充缺失的值
all_data['MSZoning'] = all_data['MSZoning'].fillna(all_data['MSZoning'].mode()[0])
  • Utilities : 对于这个分类特征,所有记录都是“AllPub”,除了一个“NoSeWa”和两个NA。因为有“NoSewa”的房子在训练集中,这个特性对预测建模没有帮助。然后我们可以安全地移除它。
all_data = all_data.drop(['Utilities'], axis=1)
  • Functional : NA 意味着典型
all_data["Functional"] = all_data["Functional"].fillna("Typ")
  • Electrical : 它有一个NA值。由于这个特性主要是’SBrkr’,可以将缺失值设置为此。
all_data['Electrical'] = all_data['Electrical'].fillna(all_data['Electrical'].mode()[0])
  • KitchenQual: 只有一个NA值,和Electrical一样,我们为KitchenQual中丢失的值设置“TA”(最常见)。
all_data['KitchenQual'] = all_data['KitchenQual'].fillna(all_data['KitchenQual'].mode()[0])
  • Exterior1st and Exterior2nd : 同样,外部1和2只有一个缺失值。我们将用最常用的字符串替换
all_data['Exterior1st'] = all_data['Exterior1st'].fillna(all_data['Exterior1st'].mode()[0])
all_data['Exterior2nd'] = all_data['Exterior2nd'].fillna(all_data['Exterior2nd'].mode()[0])
  • SaleType :用最频繁的 "WD"填充
all_data['SaleType'] = all_data['SaleType'].fillna(all_data['SaleType'].mode()[0])
  • MSSubClass : Na 很可能意味着没有建筑类。我们可以用None替换缺失值
all_data['MSSubClass'] = all_data['MSSubClass'].fillna("None")

检查还有没有缺失值

#Check remaining missing values if any 
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({'Missing Ratio' :all_data_na})
missing_data.head()

在这里插入图片描述
更多特征工程

转换一些真正分类的数值变量

#MSSubClass=The building class
all_data['MSSubClass'] = all_data['MSSubClass'].apply(str)#Changing OverallCond into a categorical variable
all_data['OverallCond'] = all_data['OverallCond'].astype(str)#Year and month sold are transformed into categorical features.
all_data['YrSold'] = all_data['YrSold'].astype(str)
all_data['MoSold'] = all_data['MoSold'].astype(str)

编码某些类别变量的标签,这些变量的排序集中可能包含信息

from sklearn.preprocessing import LabelEncoder
cols = ('FireplaceQu', 'BsmtQual', 'BsmtCond', 'GarageQual', 'GarageCond', 'ExterQual', 'ExterCond','HeatingQC', 'PoolQC', 'KitchenQual', 'BsmtFinType1', 'BsmtFinType2', 'Functional', 'Fence', 'BsmtExposure', 'GarageFinish', 'LandSlope','LotShape', 'PavedDrive', 'Street', 'Alley', 'CentralAir', 'MSSubClass', 'OverallCond', 'YrSold', 'MoSold')
# process columns, apply LabelEncoder to categorical features
for c in cols:lbl = LabelEncoder() lbl.fit(list(all_data[c].values)) all_data[c] = lbl.transform(list(all_data[c].values))# shape        
print('Shape all_data: {}'.format(all_data.shape))

在这里插入图片描述
添加一个更重要的特征

由于区域相关特征对房价的决定非常重要,我们又增加了一个特征,即每套房子的地下室、一楼和二楼的总面积

# Adding total sqfootage feature 
all_data['TotalSF'] = all_data['TotalBsmtSF'] + all_data['1stFlrSF'] + all_data['2ndFlrSF']

倾斜特征

numeric_feats = all_data.dtypes[all_data.dtypes != "object"].index# Check the skew of all numerical features
skewed_feats = all_data[numeric_feats].apply(lambda x: skew(x.dropna())).sort_values(ascending=False)
print("\nSkew in numerical features: \n")
skewness = pd.DataFrame({'Skew' :skewed_feats})
skewness.head(10)

在这里插入图片描述
(高度)倾斜特征的Box-Cox变换
使用scipy函数boxcox1p计算1+x的Box-Cox变换。
请注意,设置λ=0相当于上述用于目标变量的log1p。
有关Box-Cox转换和scipy函数页的详细信息,请参见本页

skewness = skewness[abs(skewness) > 0.75]
print("There are {} skewed numerical features to Box Cox transform".format(skewness.shape[0]))from scipy.special import boxcox1p
skewed_features = skewness.index
lam = 0.15
for feat in skewed_features:#all_data[feat] += 1all_data[feat] = boxcox1p(all_data[feat], lam)#all_data[skewed_features] = np.log1p(all_data[skewed_features])

在这里插入图片描述
获取虚拟分类特征

all_data = pd.get_dummies(all_data)
print(all_data.shape)

在这里插入图片描述
新的训练集与测试集

train = all_data[:ntrain]
test = all_data[ntrain:]

3. 建模

导入库

from sklearn.linear_model import ElasticNet, Lasso,  BayesianRidge, LassoLarsIC
from sklearn.ensemble import RandomForestRegressor,  GradientBoostingRegressor
from sklearn.kernel_ridge import KernelRidge
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import RobustScaler
from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin, clone
from sklearn.model_selection import KFold, cross_val_score, train_test_split
from sklearn.metrics import mean_squared_error
import xgboost as xgb
import lightgbm as lgb

定义交叉验证策略

使用Sklearn的cross-valu-score函数。但是这个函数没有shuffle属性,我们添加一行代码,以便在交叉验证之前对数据集进行shuffle

#Validation function
n_folds = 5def rmsle_cv(model):kf = KFold(n_folds, shuffle=True, random_state=42).get_n_splits(train.values)rmse= np.sqrt(-cross_val_score(model, train.values, y_train, scoring="neg_mean_squared_error", cv = kf))return(rmse)

基本模型

1)LASSO回归:

这个模型可能对异常值非常敏感。所以我们需要让它对他们更加有力。为此,使用sklearn的Robustscaler()方法

lasso = make_pipeline(RobustScaler(), Lasso(alpha =0.0005, random_state=1))

2)Elastic Net Regression(弹性网回归):

再次对异常值保持稳健

ENet = make_pipeline(RobustScaler(), ElasticNet(alpha=0.0005, l1_ratio=.9, random_state=3))

3)Kernel Ridge Regression(核岭回归) :

KRR = KernelRidge(alpha=0.6, kernel='polynomial', degree=2, coef0=2.5)

4)Gradient Boosting Regression (梯度增强回归):

由于huber损失使得它对异常值很稳健:

GBoost = GradientBoostingRegressor(n_estimators=3000, learning_rate=0.05,max_depth=4, max_features='sqrt',min_samples_leaf=15, min_samples_split=10, loss='huber', random_state =5)

5)XGBoost :

model_xgb = xgb.XGBRegressor(colsample_bytree=0.4603, gamma=0.0468, learning_rate=0.05, max_depth=3, min_child_weight=1.7817, n_estimators=2200,reg_alpha=0.4640, reg_lambda=0.8571,subsample=0.5213, silent=1,random_state =7, nthread = -1)

6)LightGBM :

model_lgb = lgb.LGBMRegressor(objective='regression',num_leaves=5,learning_rate=0.05, n_estimators=720,max_bin = 55, bagging_fraction = 0.8,bagging_freq = 5, feature_fraction = 0.2319,feature_fraction_seed=9, bagging_seed=9,min_data_in_leaf =6, min_sum_hessian_in_leaf = 11)

基本模型得分

通过评估交叉验证rmsle错误来了解这些基本模型是如何对执行数据

score = rmsle_cv(lasso)
print("\nLasso score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述

score = rmsle_cv(ENet)
print("ElasticNet score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述

score = rmsle_cv(KRR)
print("Kernel Ridge score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述

score = rmsle_cv(GBoost)
print("Gradient Boosting score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述

score = rmsle_cv(model_xgb)
print("Xgboost score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述

score = rmsle_cv(model_lgb)
print("LGBM score: {:.4f} ({:.4f})\n" .format(score.mean(), score.std()))

在这里插入图片描述

叠加模型

最简单的叠加方法:平均基本模型

从平均基本模型的简单方法开始。构建了一个新的类,用我们的模型扩展scikit-learn,还扩展了laverage封装和代码重用(继承)

平均基本模型类

class AveragingModels(BaseEstimator, RegressorMixin, TransformerMixin):def __init__(self, models):self.models = models# we define clones of the original models to fit the data indef fit(self, X, y):self.models_ = [clone(x) for x in self.models]# Train cloned base modelsfor model in self.models_:model.fit(X, y)return self#Now we do the predictions for cloned models and average themdef predict(self, X):predictions = np.column_stack([model.predict(X) for model in self.models_])return np.mean(predictions, axis=1)   

平均基本模型得分

在这平均了四个模型,ENet, GBoost, KRR 和lasso。当然,也可以添加更多的模型。

averaged_models = AveragingModels(models = (ENet, GBoost, KRR, lasso))score = rmsle_cv(averaged_models)
print(" Averaged base models score: {:.4f} ({:.4f})\n".format(score.mean(), score.std()))

在这里插入图片描述
即使是最简单的叠加方法也能真正提高分数。这鼓励我们进一步探索一种不那么简单的堆叠方法。

不那么简单的叠加:添加元模型

在这种方法中,我们在平均基本模型上添加一个元模型,并使用这些基本模型的折叠预测来训练我们的元模型。

训练部分的程序可描述如下:

  1. 将整个训练集分成两个不相交的集(这里是train和holdout)
  2. 在第一部分(train)上训练几个基本模型
  3. 在第二部分测试这些基本模型(holdout)
  4. 使用来自第三步的预测(称为折叠预测)作为输入,并使用正确的响应(目标变量)作为输出,以训练称为元模型的高级学习者。

前三步是迭代完成的。以5倍叠加为例,首先将训练数据分成5倍。然后进行5次迭代。在每次迭代中,将每个基本模型训练为4个折叠,并预测剩余折叠(保持折叠)。

因此,在5次迭代之后,整个数据将被用于获得折叠预测,然后将在步骤4中使用这些预测作为新特性来训练元模型。

在预测部分,根据测试数据对所有基本模型的预测进行平均,并将其作为元特征,在此基础上利用元模型进行最终预测。

叠加平均模型类

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# We again fit the data on clones of the original modelsdef 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=156)# Train cloned base models then create out-of-fold predictions# that are needed to train the cloned meta-modelout_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# Now train the cloned  meta-model using the out-of-fold predictions as new featureself.meta_model_.fit(out_of_fold_predictions, y)return self#Do the predictions of all base models on the test data and use the averaged predictions as #meta-features for the final prediction which is done by the meta-modeldef predict(self, X):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)

叠加平均模型得分

为了使这两种方法具有可比性(通过使用相同数量的模型),只需平均Enet KRR和Gboost,然后添加lasso作为元模型。

stacked_averaged_models = StackingAveragedModels(base_models = (ENet, GBoost, KRR),meta_model = lasso)score = rmsle_cv(stacked_averaged_models)
print("Stacking Averaged models score: {:.4f} ({:.4f})".format(score.mean(), score.std()))

在这里插入图片描述
通过增加元学习者,又得到了更好的分数

StackedRegressor、XGBoost和LightGBM,将XGBoost和LightGBM添加到前面定义的StackedRegressor中。

首先定义一个rmsle评估函数

def rmsle(y, y_pred):return np.sqrt(mean_squared_error(y, y_pred))

最后训练和预测

  • StackedRegressor
stacked_averaged_models.fit(train.values, y_train)
stacked_train_pred = stacked_averaged_models.predict(train.values)
stacked_pred = np.expm1(stacked_averaged_models.predict(test.values))
print(rmsle(y_train, stacked_train_pred))

在这里插入图片描述

  • XGBoost:
model_xgb.fit(train, y_train)
xgb_train_pred = model_xgb.predict(train)
xgb_pred = np.expm1(model_xgb.predict(test))
print(rmsle(y_train, xgb_train_pred))

在这里插入图片描述

  • LightGBM:
model_lgb.fit(train, y_train)
lgb_train_pred = model_lgb.predict(train)
lgb_pred = np.expm1(model_lgb.predict(test.values))
print(rmsle(y_train, lgb_train_pred))

在这里插入图片描述

'''RMSE on the entire Train data when averaging'''print('RMSLE score on train data:')
print(rmsle(y_train,stacked_train_pred*0.70 +xgb_train_pred*0.15 + lgb_train_pred*0.15 ))

在这里插入图片描述

集合预测:

ensemble = stacked_pred*0.70 + xgb_pred*0.15 + lgb_pred*0.15

输出

sub = pd.DataFrame()
sub['Id'] = test_ID
sub['SalePrice'] = ensemble
sub.to_csv('submission.csv',index=False)

在这里插入图片描述

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

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

相关文章

商务英语口语考试准备

企业类型 state-owned enterprise 国有企业 collective enterprise 集体企业 township enterprise 乡镇企业 privately-owned enterprise 私企 listed/quoted company 上市企业 Sino-foreign joint venture 中外合资企业 group corporation 集团公…

【AIGC】AI欺诈,做好以下几点,无需忧虑

文章目录 前言列举几种AI欺诈的形式以及其识别方法1.AI深度学习生成的假视频、假图片2.AI自动生成的德文或语音3.AI自动注册账号和刷数据4.AI智能防御机制 如何预防&#xff1f;1.提高公众警惕性2.发展AI监测技术3.加强关键领域的人工审核4.完善法律法规5.国际合作与交流6.开源…

AI+保险,打造让投保人“叫绝”的服务方式

近年来,信息技术在保险领域的应用越来越广泛&#xff0c;在稳步推进保险业务的线上化与智能化的同时&#xff0c;也让保险服务覆盖率有了极大的提升。然而,保险业服务在智能化转型方面仍面临着诸多挑战。 咨询热线统一接入&#xff0c;客户来电不遗漏 保险企业客户不仅体量大…

BERT模型和代码解析

1 前言 本期内容&#xff0c;笔者想解析一下自然语言处理&#xff08;NLP&#xff09;中非常有名的基于变换器的双向编码器表示技术&#xff08;即Bidirectional Encoder Representations from Transformers&#xff0c;BERT&#xff09;。 BERT 想当年&#xff08;2019年&…

Spring Cloud 微服务放了一个大招!

大家好&#xff0c;我是R哥。 关注了一段时间公众号的小伙伴都知道&#xff0c;R哥的 Spring Cloud 微服务课程每月初都会给小伙伴搞一波活动&#xff0c;这个月&#xff0c;我决定放一次大招&#xff0c;福利全新升级&#xff01;&#xff01; 本月初七天内报名微服务课程的&a…

chatgpt赋能python:Python取消warning指南:如何避免和处理警告

Python取消warning指南&#xff1a;如何避免和处理警告 如果您已经在使用Python编程&#xff0c;那么您一定会遇到过警告&#xff08;warning&#xff09;这个问题。虽然警告有时可能很有用&#xff0c;但在特定情况下&#xff0c;它们可能会引起程序错误或产生意想不到的行为…

AI绘画——了解AI绘画爆火原因与工具,并生成几个端午绘画小作品

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.AI绘画 1.AI绘画爆火原因 2.AI绘画背后原理 二.AI绘画工具介绍 1.midjour…

强烈推荐:一款中文AI问答、创作、绘画工具

前言 相信很多人已经听过ChatGPT这款人工智能机器人了&#xff0c;它能够根据用户输入的内容&#xff0c;自动生成智能回复。它使用自然语言处理技术&#xff0c;通过学习大量的文本资料&#xff0c;能够模拟人类的对话行为。它是由OpenAI开发的&#xff0c;一家非常伟大的人工…

AI绘画提示词在线工具

AI绘画提示词在线工具 该工具穷举了常用的stable diffusion提示词&#xff0c;中英文对照展示。辅助各位使用提示词&#xff0c;一定程度上减少提示词的思考。

AI 绘画(1):生成一个图片的标准流程

文章目录 文章回顾感谢人员生成一个图片的标准流程前期准备&#xff0c;以文生图为例去C站下载你需要的绘画模型导入参数导入生成结果&#xff1f;可能是BUG事后处理 图生图如何高度贴合原图火柴人转角色 涂鸦局部重绘 Ai绘画公约 文章回顾 AI 绘画&#xff08;0&#xff09;&…

最全的AI绘画提示词网站,抓紧收藏!!!

最全的AI绘画提示词网站&#xff0c;抓紧收藏&#xff01;&#xff01;&#xff01; AI绘画的原理是基于深度学习和神经网络技术&#xff0c;通过训练模型来学习和模仿人类绘画的技巧和风格&#xff0c;从而生成具有艺术性的图像。具体来说&#xff0c;AI绘画的过程包括输入图像…

【AI】1649- 12个火爆AI提示词工具,点燃你的创意灵感

关注 “AI 工具派” 探索最新 AI 工具&#xff0c;发现 AI 带来的无限可能性&#xff01; 大家好&#xff0c;Chris 今天为大家介绍一些热门的 ChatGPT、Midjourney 等 AI 提示词工具的网站&#xff0c;这些工具将为您的文案创作带来更多的创意和灵感。如果您是一个文案撰写者、…

如何使用OpenAI API和Python SDK构建自己的聊天机器人

近日&#xff0c;OpenAI公司的ChatGPT模型走红网络。同时&#xff0c;OpenAI也推出了Chat API和gpt-3.5-turbo模型&#xff0c;让开发者能够更轻松地使用与ChatGPT类似的自然语言处理模型。 通过OpenAI API&#xff0c;我们可以使用gpt-3.5-turbo模型&#xff0c;实现多种任务&…

微信小程序+讯飞语音实现个人语音助手

由于 上传图片过于麻烦&#xff0c;建议 跳转到 github typora-copy-images-to: images 1. 介绍 ​ 本案例主要 实现一个微信小程序语音助手&#xff0c;可以以提供的功能如下&#xff1a; 语音输入返回结果小程序北京的天气雨水将短暂停歇,最高气温回升至28℃。语音播放 返…

华为小艺输入法测试版 1.0.19.103 发布

新增微信 / QQ 回车键发送消息功能开关 华为小艺输入法迎来 1.0.19.103 版本众测&#xff0c;本次更新后&#xff0c;新增微信、QQ 回车键发送消息功能开关&#xff1b;新增商城语录、表情、皮肤等投诉举报入口&#xff1b;新增拼音输入过程中上滑数字不打断输入&#xff1b;联…

「流云行走,代码穿梭:Wails 携手 ChatGPT 打造 MOOC 下载器」

AD 需要gpt账号的v : iseswordgpt起名字 gpt翻译代码 因为为下载器里面有js加密代码&#xff0c;之前就是把网站上面的js加密代码扣下来&#xff0c;用goja运行js代码&#xff0c;但是它不能用于协程&#xff0c;要是想用goja&#xff0c;就要每个协程运行一个goja.Runtime。…

从清奇的角度有效地学习C++基础(只要没更完有空就更)

目录 一个学习工具 面向ChatGPT编程 bool类型&#xff08;布尔类型&#xff09; 内联函数inline C宏定义 内联函数实现 函数重载 给函数重载加点bug 如何规范重载函数&#xff1f; 参数缺省 函数赋值顺序 默认值赋值顺序 给缺省函数加点bug 引用 命名空间namesp…

亚马逊查询关键词排名的工具_亚马逊关键词的概念和查找工具

亚马逊销售中最重要的是“排名”。 而“关键字”对提高排名很重要。 搜索结果对亚马逊的销售产生重大影响。 要想让你的产品被显示在搜索结果的顶部&#xff0c;那你必须选择有效的关键字。 搜索关键词排名一直上不去&#xff0c;你可能会这么想&#xff1a; “关键字不好吧...…

阿里云盘注册邀请码——每日限量,先到先得!

阿里要推出网盘了&#xff0c;现在处于公测阶段&#xff0c;注册需要输入邀请码&#xff0c;免费1个T的空间&#xff0c;速度吊打某度盘&#xff0c;10M/s。 申请公测 现在需要官方填表申请公测表&#xff0c;一般一周内会发出公测邀请码。 以下提供几个可用的邀请码【推荐前…

阿里云盘万能邀请码,某盘彻底慌了(每天更新~)

哈喽~这里是小宝库&#xff0c;前段时间阿里云盘开始内测&#xff0c;但是邀请码很难申请&#xff0c;现在云盘慢慢加大了测试力度&#xff0c;也放出了一些可以多次注册使用的邀请码&#xff0c;小编搞到了几个&#xff0c;在这里分享给大家&#xff0c;随时可能失效&#xff…