当前位置: 首页 > news >正文

wordpress搜站点网络中断跨境电商运营模式有哪些

wordpress搜站点网络中断,跨境电商运营模式有哪些,电商类网站有几个主流程,怎么建立公众号写文章前言上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型—逻辑回归. 虽然它有回归一词, 但解决的却是分类问题目录1. 逻辑回归2. 优缺点及优化问题3. 实际案例应用4. 总结正文在前面所介绍的线性回归, 岭回归和Lasso回归这三种回…前言上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型—逻辑回归. 虽然它有回归一词, 但解决的却是分类问题目录1. 逻辑回归2. 优缺点及优化问题3. 实际案例应用4. 总结正文在前面所介绍的线性回归, 岭回归和Lasso回归这三种回归模型中, 其输出变量均为连续型, 比如常见的线性回归模型为:其写成矩阵形式为:现在这里的输出为连续型变量, 但是实际中会有输出为离散型变量这样的需求, 比如给定特征预测是否离职(1表示离职, 0表示不离职). 显然这时不能直接使用线性回归模型, 而逻辑回归就派上用场了.1. 逻辑回归引用百度百科定义逻辑(logistic)回归, 又称logistic回归分析是一种广义的线性回归分析模型常用于数据挖掘疾病自动诊断经济预测等领域。也就是说逻辑回归是从线性回归模型推广而来的, 我们从假设函数开始说起.1. 假设函数现假设因变量取值0和1, 在自变量X的条件下因变量y1的概率为p, 记作pP(y1|X), 那么y0的概率就为1-p,把因变量取1和取0的概率比值p/(1-p)称为优势比, 对优势比取自然对数, 则可以得到Sigmoid函数:令Sigmoid(p)z, 则有:而Logistic回归模型则是建立在Sigmoid函数和自变量的线性回归模型之上(这可能就是为什么带有回归二字的原因吧), 那么Logistic回归模型可以表示为:上式也常常被称为逻辑回归模型的假设函数, 其函数图像为:通过图像可以看出的取值范围为, h(x)的取值范围为[0, 1], 对于二分类问题来说, h(x)0.5则y1, h(x)0.5则y0, 而且通过图像得知: 当时, h(x)0.5, 因此时y1, 否则y0.模型的假设函数知道了, 接下来看看损失函数.2. 损失函数既然逻辑回归是建立在线性回归模型之上, 那么我们先来回顾线性回归的损失函数:如果将我们逻辑回归的假设函数代入上式损失函数, 绘制出来的图像则是非凸函数, 其很容易产生局部最优解, 而非全局最优解, 为了找到使得全局最优解, 我们需要构造一个凸函数.由于对数函数能够简化计算过程, 因此这里也是通过对数函数来构建, 先来回归下对数函数的图像(原图来自百度百科):通过上图可以发现绿线部分与我们要构造的凸函数较接近. 当ae时, 绿线部分可以分别表示为: -loge(x)和-loge(1-x). 现将x替换为h(x)并同时加入输出变量y (取值为1或0), 则有:当上式中的y1时, 其结果为-logeh(x); 当y0时, 其结果-loge[1-h(x)].最后, 将上式代入我们的损失函数中, 则有:当然, 也可以用统计学中的极大似然法构造出上式损失函数. 损失函数有了, 下一步则是求解损失函数最小的算法了.3. 算法常用的求解算法有梯度下降法, 坐标轴下降法, 拟牛顿法. 下面只介绍梯度下降法(其他方法还未涉及)你也许会有疑问, 既然是线性回归模型推广而来, 那么为什么没有最小二乘法呢?最小二乘法是用来求解最小误差平方和的算法, 而误差的平方和正是我们上面提到的线性回归的损失函数, 通过其构造出来的逻辑回归的损失函数是非凸的不容易找到全局最优解, 故不选用最小二乘法, 而通过极大似然法则可以构造出凸函数, 进而可以使用梯度下降法进行求解.对于梯度下降法的理解在这节, 这里直接给出其表示:具体的求解过程:因此, 我们的梯度下降法可以写成(其中, x01):上式也被称为批量梯度下降法, 另外两种: 随机梯度下降法和小批量梯度下降法分别表示为:2. 优缺点及优化问题1. 优点1) 模型简单, 训练速度快, 且对于输出变量有很好的概率解释2) 可以适用连续型和离散型自变量.3) 可以根据实际需求设定具体的阀值2. 缺点1) 只能处理二分类问题.2) 适用较大样本量, 这是由于极大似然估计在较小样本量中表现较差.3) 由于其是基于线性回归模型之上, 因此其同样会出现多重共线性问题.4) 很难处理数据不均衡问题3. 优化1) 可以在二分类上进行推广, 将其推广到多分类回归模型2) 对于多重共线性问题, 也可以通过删除自变量, 进行数据变换, 正则化, 逐步回归, 主成分分析等方法改善, 对于正则化逻辑回归同样有两种: L1和L2, 其分别表示为:L1正则化L2正则化3. 实际案例应用1. 数据来源及背景数据来源: https://www.kaggle.com/jiangzuo/hr-comma-sep/version/1该数据集包含14999个样本以及10个特征, 通过现有员工是否离职的数据, 建立模型预测有可能离职的员工.2. 数据概览1) 查看前2行和后2行数据importpandas as pddf pd.read_csv(rD:\Data\HR_comma_sep.csv)pd.set_option(display.max_rows, 4)df10个字段分别是: 员工对公司满意度, 最新考核评估, 项目数, 平均每月工作时长, 工作年限, 是否出现工作事故, 是否离职, 过去5年是否升职, 岗位, 薪资水平.可以看到除过岗位以及薪资水平是字符型外, 其余均是数值型.2) 查看数据类型等信息df.info()RangeIndex: 14999 entries, 0 to 14998Data columns (total 10 columns):satisfaction_level 14999 non-null float64last_evaluation 14999 non-null float64number_project 14999 non-null int64average_montly_hours 14999 non-null int64time_spend_company 14999 non-null int64Work_accident 14999 non-null int64left 14999 non-null int64promotion_last_5years 14999 non-null int64sales 14999 non-null objectsalary 14999 non-null objectdtypes: float64(2), int64(6), object(2)memory usage: 1.1 MB前两个特征为浮点型, 后两个为字符型, 其余为整型, 且均无缺失值.3). 描述性统计df.describe()df.describe(include[O]).T满意度: 范围 0.09~1, 中位数0.640, 均值0.613.最新考核评估: 范围 0.36~1, 中位数0.720, 均值0.716项目数: 范围 2~7个, 中位数4, 均值3.8平均每月工作时长 范围96~310小时, 中位数200, 均值201工作年限: 范围2~10年, 中位数3, 均值3.5.工作中出现工作事故的占14.46%.已经离职的占23.81%.过去5年升职的占2.13%.员工岗位有10种, 其中最多的是销售, 多达4140.薪资水平共有3个等级, 最多的是低等, 多达7316.3. 数据预处理没有缺失值, 因此不用处理缺失值. 对于记录来说, 其没有唯一标识的字段, 因此会存在重复记录, 这里采取不处理.1. 异常值通过箱线图查看异常值.importseaborn as snsfig, ax plt.subplots(1,5, figsize(12, 2))sns.boxplot(xdf.columns[0], datadf, axax[0])sns.boxplot(xdf.columns[1], datadf, axax[1])sns.boxplot(xdf.columns[2], datadf, axax[2])sns.boxplot(xdf.columns[3], datadf, axax[3])sns.boxplot(xdf.columns[4], datadf, axax[4])除了工作年限外, 其他均无异常值. 该异常值也反映了该公司员工中以年轻人为主4. 可视化分析1. 人力资源总体情况from pyecharts importPieattr [离职, 在职]v1[df.left.value_counts()[1], df.left.value_counts()[0]]pie Pie(该公司人力资源总体情况, title_poscenter)pie.add(,attr,v1,radius[35, 65],label_text_colorNone,is_label_showTrue,legend_orientvertical,legend_posleft,)pie.render()离职3571人,占比23.81%; 在职11428人, 占比76.19%2. 对公司满意度与是否离职的关系from pyecharts importBoxplot#字段重命名df.columns[satisfaction, evaluation, project, hours, years_work,work_accident, left, promotion, department, salary]#绘制箱线图boxplot Boxplot(对公司满意度与是否离职关系图, title_poscenter)x_axis [在职, 离职]y_axis [df[df.left 0].satisfaction.values, df[df.left 1].satisfaction.values]boxplot.add(, x_axis, boxplot.prepare_data(y_axis))boxplot.render()就中位数而言, 离职人员对公司满意度相对较低, 且离职人员对公司满意度整体波动较大. 另外离职人员中没有满意度为1的评价.3. 最新考核评估与是否离职的关系boxplot Boxplot(最新评估与是否离职关系图, title_poscenter)x_axis [在职, 离职]y_axis [df[df.left 0].evaluation.values, df[df.left 1].evaluation.values]boxplot.add(, x_axis, boxplot.prepare_data(y_axis))boxplot.render()就中位数而言, 离职人员的最新考核评估相对较高, 但其波动也大.4. 所参加项目与是否离职的关系from pyecharts importBar, Pie, Grid#按照项目数分组分别求离职人数和所有人数project_left_1 df[df.left 1].groupby(project)[left].count()project_all df.groupby(project)[left].count()#分别计算离职人数和在职人数所占比例project_left1_rate project_left_1 /project_allproject_left0_rate 1 -project_left1_rateattrproject_left1_rate.indexbar Bar(所参加项目数与是否离职的关系图, title_pos10%)bar.add(离职, attr, project_left1_rate, is_stackTrue)bar.add(在职, attr, project_left0_rate, is_stackTrue, legend_posleft, legend_orientvertical)#绘制圆环图pie Pie(各项目数所占百分比, title_poscenter)pie.add(, project_all.index, project_all, radius[35, 60], label_text_colorNone,is_label_showTrue, legend_orientvertical, legend_pos67%)grid Grid(width1200)grid.add(bar, grid_right67%)grid.add(pie)grid.render()通过下图可以发现以下2点:- 离职人员所占比例随着项目数的增多而增大, 2个项目数是特例- 离职人员比例较高的项目数2, 6, 7在总项目数中所占百分比相对较少. 项目数为2的这部分人可能是工作能力不被认可, 其离职人数也相对较高; 项目数为6, 7的这部分人则工作能力较强, 其可能在其他企业能有更好的发展, 自然离职比例也相对较高.5. 平均每月工作时长和是否离职的关系boxplot Boxplot(平均每月工作时长与是否离职关系图, title_poscenter)x_axis [在职, 离职]y_axis [df[df.left 0].hours.values, df[df.left 1].hours.values]boxplot.add(, x_axis, boxplot.prepare_data(y_axis))boxplot.render()通过下图可以看到: 离职人员的平均每月工作时长相对较长, 每月按照22个工作日计算, 每日工作时数的中位数为10.18小时, 最大值为14.09小时.6. 工作年限和是否离职的关系from pyecharts importBar, Pie, Grid#按照工作年限分别求离职人数和所有人数years_left_0 df[df.left 0].groupby(years_work)[left].count()years_all df.groupby(years_work)[left].count()#分别计算离职人数和在职人数所占比例years_left0_rate years_left_0 /years_allyears_left1_rate 1 -years_left0_rateattryears_all.indexbar Bar(工作年限与是否离职的关系图, title_pos10%)bar.add(离职, attr, years_left1_rate, is_stackTrue)bar.add(在职, attr, years_left0_rate, is_stackTrue, legend_posleft , legend_orientvertical)#绘制圆环图pie Pie(各工作年限所占百分比, title_poscenter)pie.add(, years_all.index, years_all, radius[35, 60], label_text_colorNone,is_label_showTrue, legend_orientvertical, legend_pos67%)grid Grid(width1200)grid.add(bar, grid_right67%)grid.add(pie)grid.render()通过下图可以得出:- 在各工作年限中, 离职人员较集中于3, 4, 5, 6年, 而6年以上则相对稳定- 企业中3年人数所占百分比最多, 其次是2年, 主要以年轻人为主7. 是否发生工作事故与是否离职的关系from pyecharts importBaraccident_leftpd.crosstab(df.work_accident, df.left)attraccident_left.indexbar Bar(是否发生工作事故与是否离职的关系图, title_poscenter)bar.add(离职, attr, accident_left[1], is_stackTrue)bar.add(在职, attr, accident_left[0], is_stackTrue, legend_posleft , legend_orientvertical, is_label_showTrue)bar.render()可以看到少部分出现工作事故, 且其中有较少部分人离职.8. 5年内是否升职与是否离职的关系promotion_left pd.crosstab(df.promotion, df.left)attrpromotion_left.indexbar Bar(5年内是否升职与是否离职的关系图, title_poscenter)bar.add(离职, attr, promotion_left[1], is_stackTrue)bar.add(在职, attr, promotion_left[0], is_stackTrue, legend_posleft , legend_orientvertical, is_label_showTrue)bar.render()5年内多数人没有升职, 离职率就相对较高.9. 岗位与是否离职的关系#分别计算各岗位离职人员比例和各岗位占总体百分比department_left_0 df[df.left 0].groupby(department)[left].count()department_all df.groupby(department)[left].count()department_left0_rate department_left_0 /department_alldepartment_left1_rate 1 -department_left0_rateattrdepartment_all.indexbar Bar(岗位与离职比例的关系图, title_top40%)bar.add(离职, attr, department_left1_rate, is_stackTrue)bar.add(在职, attr, department_left0_rate, is_stackTrue, is_datazoom_showTrue,xaxis_interval0, xaxis_rotate30, legend_top45%, legend_pos80%)#绘制圆环图pie Pie(各个岗位所占百分比, title_posleft)pie.add(, department_all.index, department_all,center[50, 23], radius[18, 35], label_text_colorNone,is_label_showTrue, legend_orientvertical, legend_pos80%, legend_top4%)grid Grid(width1200, height700)grid.add(bar, grid_top50%, grid_bottom25%)grid.add(pie)grid.render()通过下图可以看出:- 销售岗位所占百分比最多, 达到27.6%, 最少是管理层, 其所占百分比是4.2%- 令人意外的是hr岗位离职比例最大.10. 薪资水平和是否离职的关系from pyecharts importBar#按照薪资水平分别求离职人数和所有人数salary_left pd.crosstab(df.salary, df.left).sort_values(0, ascending False)attrsalary_left.indexbar Bar(薪资水平和是否离职的关系图, title_poscenter)bar.add(离职, attr, salary_left[1], is_stackTrue)bar.add(在职, attr, salary_left[0], is_stackTrue, legend_posleft , legend_orientvertical, is_label_showTrue)bar.render()薪资分为三个水平: 低等, 中等, 高等. 低等水平离职人数最多, 所占比例也最大, 而高等则最少.5. 特征工程1. 离散型数据处理离散型数据可分为两种: 一种是定序, 一种是定类.1) 定序薪资水平其含有顺序意义, 因此将其字符型转化为数值型df[salary] df.salary.map({low: 0, medium: 1, high: 2})df.salary.unique()array([0, 1, 2], dtypeint64)2) 定类岗位是定类型变量, 对其进行one-hot编码, 这里直接利用pandas的get_dummies方法.df_one_hot pd.get_dummies(df, prefixdep)df_one_hot.shape(14999, 19)2. 连续型数据处理逻辑回归模型能够适应连续型变量, 因此可以不用进行离散化处理, 又由于多个特征之间差异差异较大会造成梯度下降算法收敛速度变慢, 故进行归一化处理#采用max-min归一化方法hours df_one_hot[hours]df_one_hot[hours] df_one_hot.hours.apply(lambda x: (x-hours.min()) / (hours.max()-hours.min()))3. 相关系数两个变量均是连续型且具有线性关系, 则可以使用皮尔逊相关系数, 否则使用斯皮尔曼相关系数, 这里采用斯皮尔曼相关系数#计算相关系数correlation df_one_hot.corr(method spearman)plt.figure(figsize(18, 10))#绘制热力图sns.heatmap(correlation, linewidths0.2, vmax1, vmin-1, linecolorw,fmt.2f,annotTrue,annot_kws{size:10},squareTrue)6. 逻辑回归模型1. 划分数据集from sklearn.model_selection importtrain_test_split#划分训练集和测试集X df_one_hot.drop([left], axis1)y df_one_hot[left]X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state1)2. 训练模型from sklearn.linear_model importLogisticRegressionLRLogisticRegression()print(LR.fit(X_train, y_train))print(训练集准确率:, LR.score(X_train, y_train))print(测试集准确率:, LR.score(X_test, y_test))LogisticRegression(C1.0, class_weightNone, dualFalse, fit_interceptTrue,intercept_scaling1, max_iter100, multi_classwarn,n_jobsNone, penaltyl2, random_stateNone, solverwarn,tol0.0001, verbose0, warm_startFalse)训练集准确率: 0.7978998249854155测试集准确率: 0.7966666666666666参考官方文档说明, 参数C是正则化项参数的倒数, C的数值越小, 惩罚的力度越大. penalty可选L1, L2正则化项, 默认是L2正则化.参数solver可选{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}这5个优化算法:newton-cg, lbfgs是拟牛顿法, liblinear是坐标轴下降法, sag, saga是随机梯度下降法, saga可以适用于L1和L2正则化项, 而sag只能用于L2正则化项.#指定随机梯度下降优化算法LR LogisticRegression(solversaga)print(LR.fit(X_train, y_train))print(训练集准确率:, LR.score(X_train, y_train))print(测试集准确率:, LR.score(X_test, y_test))LogisticRegression(C1.0, class_weightNone, dualFalse, fit_interceptTrue,intercept_scaling1, max_iter100, multi_classwarn,n_jobsNone, penaltyl2, random_stateNone, solversaga,tol0.0001, verbose0, warm_startFalse)训练集准确率: 0.7980665055421285测试集准确率: 0.7973333333333333在选择随机梯度下降法后, 训练集和测试集准确率均略有提升.3. 调参#用准确率进行10折交叉验证选择合适的参数Cfrom sklearn.linear_model importLogisticRegressionCVCs 10**np.linspace(-10, 10, 400)lr_cv LogisticRegressionCV(CsCs, cv10, penaltyl2, solversaga, max_iter10000, scoringaccuracy)lr_cv.fit(X_train, y_train)lr_cv.C_array([25.52908068])用该参数进行预测LR LogisticRegression(solversaga, penaltyl2, C25.52908068)print(训练集准确率:, LR.score(X_train, y_train))print(测试集准确率:, LR.score(X_test, y_test))训练集准确率: 0.7984832069339112测试集准确率: 0.798训练集和测试集准确率均有所提升, 对于二分类问题, 准确率有时不是很好的评估方法, 这时需要用到混淆矩阵4. 混淆矩阵from sklearn importmetricsX_train_predLR.predict(X_train)X_test_predLR.predict(X_test)print(训练集混淆矩阵:)print(metrics.confusion_matrix(y_train, X_train_pred))print(测试集混淆矩阵:)print(metrics.confusion_matrix(y_test, X_test_pred))训练集混淆矩阵:[[8494 647][1771 1087]]测试集混淆矩阵:[[2112 175][ 431 282]]from sklearn.metrics importclassification_reportprint(训练集:)print(classification_report(y_train, X_train_pred))print(测试集:)print(classification_report(y_test, X_test_pred))训练集:precision recall f1-score support0 0.83 0.93 0.88 91411 0.63 0.38 0.47 2858micro avg 0.80 0.80 0.80 11999macro avg 0.73 0.65 0.67 11999weighted avg 0.78 0.80 0.78 11999测试集:precision recall f1-score support0 0.83 0.92 0.87 22871 0.62 0.40 0.48 713micro avg 0.80 0.80 0.80 3000macro avg 0.72 0.66 0.68 3000weighted avg 0.78 0.80 0.78 3000在训练集有0.83的精准率和0.93的召回率, 在测试集上有0.83的精准率和0.92的召回率.7. 朴素贝叶斯模型朴素贝叶斯模型是基于特征条件独立假设和贝叶斯理论.from sklearn.naive_bayes importGaussianNBfrom sklearn.model_selection importcross_val_score#构建高斯朴素贝叶斯模型gnb GaussianNB()gnb.fit(X_train, y_train)print(训练集准确率:, gnb.score(X_train, y_train))print(测试集准确率:, gnb.score(X_test, y_test))X_train_predgnb.predict(X_train)X_test_predgnb.predict(X_test)print(训练集混淆矩阵:)print(metrics.confusion_matrix(y_train, X_train_pred))print(测试集混淆矩阵:)print(metrics.confusion_matrix(y_test, X_test_pred))print(训练集:)print(classification_report(y_train, X_train_pred))print(测试集:)print(classification_report(y_test, X_test_pred))训练集准确率: 0.7440620051670973测试集准确率: 0.741训练集混淆矩阵:[[6791 2350][ 721 2137]]测试集混淆矩阵:[[1680 607][ 170 543]]训练集:precision recall f1-score support0 0.90 0.74 0.82 91411 0.48 0.75 0.58 2858micro avg 0.74 0.74 0.74 11999macro avg 0.69 0.75 0.70 11999weighted avg 0.80 0.74 0.76 11999测试集:precision recall f1-score support0 0.91 0.73 0.81 22871 0.47 0.76 0.58 713micro avg 0.74 0.74 0.74 3000macro avg 0.69 0.75 0.70 3000weighted avg 0.80 0.74 0.76 3000可以看到其准确率较逻辑回归低, 但是精准率高于逻辑回归.8. ROC曲线from sklearn importmetricsfrom sklearn.metrics importroc_curve#将逻辑回归模型和高斯朴素贝叶斯模型预测出的概率均与实际值通过roc_curve比较返回假正率, 真正率, 阈值lr_fpr, lr_tpr, lr_thresholds roc_curve(y_test, LR.predict_proba(X_test)[:,1])gnb_fpr, gnb_tpr, gnb_thresholds roc_curve(y_test, gnb.predict_proba(X_test)[:,1])#分别计算这两个模型的auc的值, auc值就是roc曲线下的面积lr_roc_auc metrics.auc(lr_fpr, lr_tpr)gnb_roc_aucmetrics.auc(gnb_fpr, gnb_tpr)plt.figure(figsize(8, 5))plt.plot([0,1], [0, 1],--, colorr)plt.plot(lr_fpr, lr_tpr, labelLogisticRegression(area %0.2f) %lr_roc_auc)plt.plot(gnb_fpr, gnb_tpr, labelGaussianNB(area %0.2f) %gnb_roc_auc)plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.0])plt.title(ROC)plt.xlabel(FPR)plt.ylabel(TPR)plt.legend()plt.show()ROC曲线越靠近左上角说明分类效果越好, 与之对应的auc的值就越大. 对于该数据集来说, 高斯朴素贝叶斯模型略优于逻辑回归模型总结本文从逻辑回归模型的原理开始介绍, 并通过实际案例对逻辑回归模型进行应用, 但是结果还不是很好, 一方面是模型表现不是很好(当然, 也仅仅用到了逻辑回归和朴素贝叶斯) ; 另一方面是特征工程没有处理好(朴素贝叶斯模型对特征条件独立假设较敏感), 应当进行特征选择, 比如主成分分析.参考资料:网易云课堂《吴恩达机器学习》《Python数据分析与挖掘实战》声明: 仅用于学习交流标签版权申明本站文章部分自网络如有侵权请联系west999comoutlook.com特别注意本站所有转载文章言论不代表本站观点本站所提供的摄影照片插画设计作品如需使用请与原作者联系版权归原作者所有
http://wiki.neutronadmin.com/news/222984/

相关文章:

  • 绿色学校网站模板wordpress 付款插件
  • 上线了怎么做网站东营+网站建设
  • 用服务器ip怎么做网站哈尔滨市建设工程交易信息网
  • 北京网站设计的公司企业网站管理系统用哪个好
  • 软文广告成功案例杭州百度百家号seo优化排名
  • 网站建设公司运营计划潍坊网站建设联系电话
  • 怎么做 niche网站wordpress 翻页电子书
  • 贵阳住房和城乡建设部网站用jsp做的网站源代码
  • 建网站服务公司南昌餐厅网站建设
  • 做平面的公司网站蒙城网站建设
  • 网站论坛制作抚州购物网站开发设计
  • 大朗做网站的网站安全建设工作总结
  • 怎么做网站后期维护软文推广营销平台
  • 所有工程建设前会在哪个网站公式新手怎么学网络运营
  • 安康做网站要制作网页
  • 定制网站建设哪家好有没有哪个网站可以做LCM模组
  • 乐清网站制作公司哪家好建设景区网站的目的
  • 水务 网站建设Wordpress双主题
  • 广州知名网站建设全栈网站开发流行框架
  • 网站设计服务商济南城市建设集团
  • 不通过网站可以做360全景吗wordpress教程全集(入门到精通)
  • 建商城站用WordPressseo技术培训茂名
  • 网站设计费用多少钱襄阳住房和城乡建设局网站首页
  • 计算机专业主要学什么内容无锡优化网站费用
  • 中国十大网站建设企业品牌营销与市场营销的区别
  • 手机网站好处海珠做网站
  • 网站的色调行业解决方案
  • 写出网站建设步骤成都市建设网站首页
  • 广东金东建设工程公司网站网络服务商缩写
  • 怎么申请免费国内免费网站开发网站嵌入广告