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

365建设网站如何建企业网站

365建设网站,如何建企业网站,昆明二建建设集团网站,亿牛网文章目录 一、概念与原理1.1 决策树1.1.1 概念1.1.2 原理特征选择分割方法 1.1.3 优点与缺点1.1.4 Python常用决策树算法 1.2 随机森林1.2.1 概念1.2.2 原理1.2.3 优点与缺点1.2.4 Python常用随机森林算法 1.3 决策树与随机森林的比较1.3.1 相同之处1.3.2 不同之处 二、决策树算… 文章目录 一、概念与原理1.1 决策树1.1.1 概念1.1.2 原理特征选择分割方法 1.1.3 优点与缺点1.1.4 Python常用决策树算法 1.2 随机森林1.2.1 概念1.2.2 原理1.2.3 优点与缺点1.2.4 Python常用随机森林算法 1.3 决策树与随机森林的比较1.3.1 相同之处1.3.2 不同之处 二、决策树算法三、随机森林3.1 构建和训练随机森林模型3.1.1 随机选择样本3.1.2 随机选择特征 3.2 特征重要性的评估方法 四、决策树与随机森林的应用4.1 实际问题中的应用场景4.1.1 医疗诊断4.1.2 金融风控4.1.3 客户分类 4.2 泰坦尼克号生存预测4.2.1 数据预处理4.2.2 随机森林模型4.2.3 预测文件内容4.2.4 预测输入数据 五、调优5.1 超参数调优5.2 交叉验证和网格搜索5.3 提升模型性能的技巧和策略 一、概念与原理 1.1 决策树 1.1.1 概念 决策树是一种机器学习算法其模型呈现为一个树状结构用于解决分类和回归问题。决策树通过对数据集的特征进行分析和判断构建出一系列的决策规则并根据这些规则对新的数据进行预测。 决策树的每个节点表示一个特征每个分支代表该特征的某个取值而每个叶子节点代表一个分类或预测值。树的顶部节点称为根节点最底部的叶子节点称为叶节点。决策树的每个内部节点都包含一个条件用于决定当前样本实例的下一个分支。通过从根节点一直向下移动并根据样本的特征值和条件进行逐级分支直到达到一个叶节点就可以得到对该样本的预测或分类结果。 构建决策树的过程基于信息熵、信息增益、基尼系数等指标来选择最佳的划分特征并递归地将数据集划分为更小的子集直到满足某种终止条件如达到最大深度、节点包含的样本数达到最小值等为止。 决策树在机器学习中具有较好的可解释性和可视化性它能够处理离散和连续特征也能够处理多分类和回归问题。然而决策树容易过拟合训练数据可以通过剪枝、设置模型参数等方法来改善模型性能。 1.1.2 原理 我们将从特征选择和分割方法两个方面介绍决策树的实现原理。 特征选择 决策树通过选择最佳的特征作为当前节点的划分特征以获得最大的信息增益或最小的基尼指数。我们使用信息熵来度量数据的混乱程度其数学公式如下 熵 ( D ) − Σ ( p i ∗ l o g 2 ( p i ) ) 熵(D) -Σ(p_i * log2(p_i)) 熵(D)−Σ(pi​∗log2(pi​)) 其中D 表示数据集p_i 表示数据集中第i个类别的概率。熵的值越大表示数据集的不确定性越高。 信息增益ID3 算法用于选择最佳特征其计算公式如下 信息增益 ( D , A ) 熵 ( D ) − Σ ( ∣ D v ∣ / ∣ D ∣ ∗ 熵 ( D v ) ) 信息增益(D, A) 熵(D) - Σ(|D_v| / |D| * 熵(D_v)) 信息增益(D,A)熵(D)−Σ(∣Dv​∣/∣D∣∗熵(Dv​)) 其中A 表示特征D_v 表示特征 A 下的子数据集|D| 表示数据集 D 的样本数|D_v| 表示子数据集 D_v 的样本数。信息增益越大表示特征 A 对于分类的贡献越大。 基尼指数CART 算法在特征选择中也常被使用其计算公式如下 基尼指数 ( D ) 1 − Σ ( p i 2 ) 基尼指数(D) 1 - Σ(p_i^2) 基尼指数(D)1−Σ(pi2​) 基尼指数的值越小表示数据集的纯度越高。基尼指数越小表示特征的分类能力越好。 分割方法 在特征选择后我们使用不同的分割方法将数据集划分为子集。对于离散特征我们可以使用简单的等于或不等于条件进行划分如 A a 或 A ! a。对于连续特征我们可以选择一个阈值进行划分如 A t 或 A t。 根据选择的特征和划分方法我们可以得到一个决策树的节点每个分支对应一个特征的取值。我们可以递归地对每个子数据集进行特征选择和分割方法的确定从而构建整个决策树。 最终当达到终止条件时我们将最后的叶节点分配为一个类别或者对回归问题进行平均值预测。 1.1.3 优点与缺点 决策树具有以下优点 可解释性决策树是一种直观且易于理解的模型可以提供清晰的决策规则。它可以帮助我们了解特征的重要性和影响以及预测结果的推理过程。 处理多种数据类型决策树可以同时处理离散特征和连续特征以及具有多个类别的分类问题。 没有复杂的假设决策树不需要任何附加的假设或参数因此可以很好地适应不同类型的数据集。 可以处理缺失值和异常值决策树具有容忍缺失值和异常值的能力在数据预处理方面更加灵活。 可以处理高维数据决策树可以处理具有很多特征的高维数据集而不需要进行降维操作。 可扩展性决策树可以与其他机器学习技术如集成学习结合使用以提高模型的性能。 然而决策树也存在一些缺点 容易过拟合决策树在处理复杂数据时容易过度匹配训练数据导致模型过拟合无法泛化到未见过的数据。 对输入数据的变化敏感数据集中较小的变化可能导致不同的决策树生成这使得模型不稳定。 忽略数据间的相关性决策树通常基于每个节点最优的特征进行划分而不考虑特征之间的相关性。 选择最佳划分特征的计算开销较大决策树需要计算每个特征的信息增益或基尼指数这对于具有大量特征的数据集来说可能是计算密集型的。 对于类别不平衡的数据集可能不敏感决策树在处理类别不平衡的数据集时可能会倾向于选择具有更多样本的类别作为主要决策规则。 总之决策树是一种强大而灵活的算法但也有其局限性。在使用决策树时需要注意并解决过拟合问题并结合其他技术对其进行改进和加强。 1.1.4 Python常用决策树算法 在 Python 中有几个常用的决策树算法可以使用以下是其中的一些 ID3 算法基于信息增益来选择最佳划分特征的决策树算法。它使用信息熵来度量数据集的混乱程度并选择具有最大信息增益的特征作为节点的划分特征。 C4.5 算法与 ID3 算法类似但它使用信息增益比来选择最佳特征。信息增益比考虑了特征的取值个数对信息增益的影响避免了对取值多的特征倾向的问题。 CART 算法Classification and Regression Trees分类和回归树是一种非常通用的决策树算法。与 ID3 和 C4.5 不同CART 算法既可以处理分类问题也可以处理回归问题。它使用基尼指数来选择最佳划分特征以最小化数据集的不纯度。 RandomForest随机森林随机森林是一种集成学习的决策树算法。它通过随机选择一部分特征和样本子集来构建多个决策树并对它们的结果进行平均或投票来进行预测。随机森林可以减少过拟合风险并具有较好的性能。 这些算法都可以通过 Python 中的 sklearn 库来实现。sklearn 库提供了DecisionTreeClassifier和DecisionTreeRegressor类来构建决策树模型并提供相应的参数和方法来调整和评估模型。在使用这些决策树算法时还可以进行一些技术手段来改善模型的性能如剪枝、调整参数、采用交叉验证等。 1.2 随机森林 1.2.1 概念 随机森林是一种集成学习方法它由多个决策树组成的模型。每个决策树都基于不同的随机样本集和随机特征子集进行训练。随机森林通过整合所有决策树的预测结果来进行最终的预测或分类。随机森林可以提高模型的鲁棒性和准确性并且对于大规模数据集具有较好的性能。 1.2.2 原理 假设我们有一个训练数据集 D包含 N 个样本和 M 个特征。我们要构建一个包含 T 个决策树的随机森林模型。 随机森林的实现原理如下 随机采样首先从原始数据集D中进行有放回的随机采样生成T个训练子集。每个训练子集的大小约为N个样本的63%。用D_i表示第i个训练子集。 随机选择特征对于每个决策树的每个节点在特征上进行随机选择。这里我们设置一个可调节的参数max_features它决定了每个节点的最大候选分割特征数。通常max_features的推荐值是总特征数的平方根。 决策树的构建使用随机采样的训练子集和随机选择的特征子集来构建每个决策树。对于第t个决策树使用训练子集D_t进行构建。决策树的构建过程与传统决策树算法相似通过递归地选择最佳特征进行节点分割直到满足终止条件。 集成预测对于分类问题随机森林使用多数投票法来确定最终的分类结果。对于回归问题随机森林取所有决策树的预测结果的平均值作为最终的回归值。 下面是一段示例代码展示了如何使用 sklearn 库来实现随机森林模型。 from sklearn.ensemble import RandomForestClassifier# 创建随机森林分类器对象 rf_classifier RandomForestClassifier(n_estimators100, max_featuressqrt)# 使用训练数据拟合模型 rf_classifier.fit(train_features, train_labels)# 使用随机森林进行预测 predictions rf_classifier.predict(test_features)在上述代码中我们使用RandomForestClassifier类来实现随机森林分类器。通过设置n_estimators参数来指定决策树的数量max_features参数用于控制每个节点的特征子集大小。通过fit方法拟合训练数据然后使用predict方法进行预测。 通过组合多个决策树的预测随机森林能够减少过拟合的风险并获得更稳定和准确的预测结果。它在机器学习中被广泛应用于分类和回归问题并展现出良好的性能和鲁棒性。 1.2.3 优点与缺点 随机森林的优点 随机森林可以处理高维数据集且不需要特征选择进行降维。在处理大规模数据集时随机森林具有很好的效率。随机森林能够处理不平衡的数据集并且能够生成平衡的分类器。随机森林可以估测缺失数据并保持精确性。随机森林具有较好的预测准确性。 随机森林的缺点 随机森林相对于其他算法如支持向量机等在处理小规模数据集时可能会出现过拟合的情况。随机森林的模型复杂度较高在训练时需要较大的内存空间。对于非线性的数据集随机森林的表现可能不如其他算法。随机森林的建模过程比较难解释不利于提取模型的特征解释性。 1.2.4 Python常用随机森林算法 在 Python 中常用的随机森林算法实现主要包括以下几种 scikit-learn 库中的RandomForestClassifier和RandomForestRegressor类这两个类提供了随机森林分类和回归的功能并提供了一系列参数供用户调整如树的数量、最大深度等。 XGBoost 库中的XGBClassifier和XGBRegressor类XGBoost 是一种梯度提升树算法通过集成多棵树进行分类或回归。它可以使用 sklearn 的接口形式进行使用。 LightGBM 库中的LGBMClassifier和LGBMRegressor类LightGBM 是一种基于梯度提升树的高效算法也可以用来进行分类和回归问题。同样它也提供了与 sklearn 兼容的接口。 CatBoost 库中的CatBoostClassifier和CatBoostRegressor类CatBoost 是一种基于梯度提升树的机器学习算法特别适用于处理类别型特征和高维稀疏数据。它也提供了与 sklearn 兼容的接口。 1.3 决策树与随机森林的比较 决策树和随机森林是常用的机器学习算法常用于分类和回归问题。它们的设计和实现原理有一些相同之处但也存在一些显著的差异。 1.3.1 相同之处 首先让我们先了解决策树和随机森林的相同之处 决策树和随机森林都是基于树结构的算法用于从数据中学习一系列的决策规则。它们都能够处理分类和回归问题。 决策树和随机森林都以属性值的比较进行分割。在每个节点上通过计算属性的信息增益或基尼指数等指标选择最优的属性进行分割。 决策树和随机森林都可以处理离散型和连续型属性。对于离散型属性可以通过计算属性值的频率或熵来进行选择对于连续型属性可以通过计算属性值的二分点来进行选择。 下面我们将讨论决策树和随机森林的不同之处。 1.3.2 不同之处 决策树与随机森林的关系决策树是随机森林中的基本构成单元。随机森林是由多棵决策树组成的集成模型。 处理过拟合的能力决策树容易发生过拟合现象特别是当树的深度较大时。而随机森林通过集成多个决策树并根据随机抽样来生成不同的训练集可以有效减轻过拟合问题提高模型的泛化能力。 数据特征选择在决策树中由于每个节点只考虑其中一个属性进行分裂可能会忽略其他重要属性的影响。而在随机森林中每个决策树都是在随机选择的子集上进行训练因此可以更全面地考虑所有属性的重要性减少了特征选择的偏差。 接下来让我们通过 Python 代码来演示决策树和随机森林的实现。 首先我们导入需要的库 import numpy as np from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score接着我们加载一个示例数据集使用 sklearn 的鸢尾花数据集 iris datasets.load_iris() X iris.data y iris.target然后我们将数据分割为训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)接下来我们分别使用决策树和随机森林进行模型训练和预测 # 决策树 decision_tree DecisionTreeClassifier() decision_tree.fit(X_train, y_train) y_pred_dt decision_tree.predict(X_test)# 随机森林 random_forest RandomForestClassifier() random_forest.fit(X_train, y_train) y_pred_rf random_forest.predict(X_test)最后我们分别计算决策树和随机森林的准确率 accuracy_dt accuracy_score(y_test, y_pred_dt) accuracy_rf accuracy_score(y_test, y_pred_rf)print(决策树准确率, accuracy_dt) print(随机森林准确率, accuracy_rf)通过以上代码我们可以看到决策树和随机森林都能够实现对鸢尾花数据集的分类任务并得到相应的准确率。 二、决策树算法 首先我们需要导入相应的库 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score接下来我们加载一个示例数据集使用 sklearn 的鸢尾花数据集 iris datasets.load_iris() X iris.data y iris.target然后我们将数据分割为训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)接下来我们创建一个决策树分类器并用训练数据进行模型训练 decision_tree DecisionTreeClassifier() decision_tree.fit(X_train, y_train)此时决策树模型已经训练完毕。接下来我们可以使用测试集进行预测并计算模型的准确率 y_pred decision_tree.predict(X_test) accuracy accuracy_score(y_test, y_pred)print(决策树准确率, accuracy)以上代码中我们使用了 sklearn 库中的DecisionTreeClassifier类来构建决策树分类器并使用fit()方法进行模型训练。然后使用predict()方法对测试集进行预测最后使用accuracy_score()方法计算模型的准确率。 三、随机森林 3.1 构建和训练随机森林模型 随机森林的构建过程主要包括两个步骤随机选择样本和随机选择特征。 3.1.1 随机选择样本 在构建每棵决策树时随机森林从原始训练集中进行有放回抽样构建一个新的训练集该新训练集的样本数量与原始训练集相同但有些样本可能会重复。这种有放回抽样的方式确保了每棵决策树之间的差异性增加了模型的多样性从而提高了模型的泛化能力。 3.1.2 随机选择特征 在构建每棵决策树的节点时随机森林从所有特征中随机选择一部分特征然后根据选定的特征来进行节点分裂。这样做的好处是它减少了特征之间的相关性避免了某些特定特征对模型的过度依赖。 下面是使用 Python 中的sklearn库来构建和训练随机森林模型的示例代码 # 导入所需的库和模块 from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score# 加载数据集 iris load_iris() X, y iris.data, iris.target# 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 构建随机森林模型 rf_model RandomForestClassifier(n_estimators100, random_state42)# 训练模型 rf_model.fit(X_train, y_train)# 在测试集上进行预测 y_pred rf_model.predict(X_test)# 计算准确率 accuracy accuracy_score(y_test, y_pred) print(随机森林模型的准确率, accuracy)3.2 特征重要性的评估方法 随机森林除了能够用于预测还可以通过评估特征的重要性来帮助我们理解数据和模型。特征重要性指的是在模型训练过程中各个特征对于模型性能的贡献程度。 随机森林通过衡量每个特征在模型中的节点分裂中的纯度提高通常是基尼系数或信息增益来评估特征的重要性。在训练完成后我们可以通过以下方法来获取特征重要性 # 获取特征重要性 importance rf_model.feature_importances_# 将特征重要性与对应特征名称进行关联 feature_importance dict(zip(iris.feature_names, importance))# 按照重要性降序排列 sorted_feature_importance dict(sorted(feature_importance.items(), keylambda x: x[1], reverseTrue))# 输出特征重要性 print(特征重要性排名) for feature, importance in sorted_feature_importance.items():print(f{feature}: {importance})特征重要性的值越大表示该特征对于模型的预测能力越强因此在特征工程中我们可以根据这些重要性信息来选择最有用的特征或者排除不重要的特征以提高模型的性能。 四、决策树与随机森林的应用 4.1 实际问题中的应用场景 决策树与随机森林是在机器学习领域中常用的分类与回归算法。它们在实际问题中的应用场景非常广泛包括但不限于以下几个方面 4.1.1 医疗诊断 决策树与随机森林可以用于医疗领域辅助医生进行疾病诊断。通过输入患者的临床指标、生理参数等信息决策树可以帮助医生快速判断患者可能患有哪种疾病从而更好地进行治疗与护理。 4.1.2 金融风控 在金融行业中决策树与随机森林可用于评估贷款申请人的信用风险。根据申请人的个人信息、信用历史、财务状况等数据这些算法可以预测出借款人是否有能力按时还款从而帮助银行做出贷款决策降低坏账率。 4.1.3 客户分类 在市场营销中决策树与随机森林可以用于客户分类与定向广告。通过分析客户的购买行为、兴趣偏好等信息这些算法可以将客户分为不同的群体并针对性地推送广告与优惠活动提高营销效率。 4.2 泰坦尼克号生存预测 下载地址 训练文件train.csv892 条数据 测试数据test.csv419 条数据 4.2.1 数据预处理 导入库 import pandas as pd读取数据 # 读取数据 data pd.read_csv(titanic\\train.csv)数据预处理 # 数据预处理 data data.drop([PassengerId, Name, Ticket, Cabin, Embarked], axis1) data[Age] data[Age].fillna(data[Age].mean()) data[Sex] data[Sex].map({female: 0, male: 1})划分特征和标签 # 划分特征和标签 X data.drop(Survived, axis1) y data[Survived]4.2.2 随机森林模型 导入库 from sklearn.ensemble import RandomForestClassifier构建模型 # 构建随机森林模型 model RandomForestClassifier(n_estimators100, random_state42) model.fit(X, y)4.2.3 预测文件内容 导入库 from sklearn.impute import SimpleImputer读取测试数据 # 读取测试数据 test_data pd.read_csv(titanic\\test.csv)数据预处理 # 数据预处理 test_data test_data.drop([PassengerId, Name, Ticket, Cabin, Embarked], axis1) test_data[Age] test_data[Age].fillna(test_data[Age].mean()) test_data[Sex] test_data[Sex].map({female: 0, male: 1})填充缺失值 # 填充缺失值 imputer SimpleImputer(strategymean) test_data pd.DataFrame(imputer.fit_transform(test_data), columnstest_data.columns)预测 # 预测 predictions model.predict(test_data) print(predictions)4.2.4 预测输入数据 输入数据 # 输入数据 pclass int(input(Pclass(1-3):)) # 船票级别1,2或3 sex int(input(Sex(male:1,female:0):)) # 性别男1女0 age int(input(Age:)) # 年龄 sibsp int(input(SibSp:)) # 船上的兄弟姐妹以及配偶的人数 parch int(input(Parch:)) # 船上的父母以及子女的人数 fare float(input(Fare:)) # 船票费用 input_data pd.DataFrame({Pclass: [pclass], Sex: [sex], Age: [age], SibSp: [sibsp], Parch: [parch], Fare: [fare]})预测结果 # 预测结果 prediction model.predict(input_data) if 0 in prediction:print(survive) else:print(do not survive)Pclass(1-3):2 Sex(male:1,female:0):1 Age:25 SibSp:0 Parch:0 Fare:1000 survive五、调优 5.1 超参数调优 在机器学习中超参数是指在模型训练之前需要手动设置的参数。决策树和随机森林模型都有一些重要的超参数调优这些超参数可以提高模型的性能。 决策树的超参数包括最大深度max_depth、最小样本划分数min_samples_split、最小叶子节点样本数min_samples_leaf等。通过调整这些超参数可以控制决策树的复杂度和泛化能力。 随机森林的超参数包括决策树数量n_estimators、最大特征数max_features、最大深度max_depth等。通过调整这些超参数可以控制随机森林的复杂度和泛化能力。 5.2 交叉验证和网格搜索 为了找到最优的超参数组合可以使用交叉验证和网格搜索的方法。 交叉验证是一种评估模型性能的方法它将数据集分成训练集和验证集多次训练模型并计算验证集上的性能指标最后取平均值作为模型的性能评估。 网格搜索是一种系统地遍历多个超参数组合的方法通过交叉验证评估每个超参数组合的性能最后选择性能最好的超参数组合作为最终模型的超参数。 下面是使用交叉验证和网格搜索调优决策树和随机森林模型的示例代码 from sklearn.model_selection import GridSearchCV from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier# 决策树调优 param_grid {max_depth: [3, 5, 7],min_samples_split: [2, 4, 6],min_samples_leaf: [1, 2, 3] } dt DecisionTreeClassifier() grid_search GridSearchCV(dt, param_grid, cv5) grid_search.fit(X_train, y_train) best_dt grid_search.best_estimator_# 随机森林调优 param_grid {n_estimators: [50, 100, 200],max_features: [auto, sqrt, log2],max_depth: [3, 5, 7] } rf RandomForestClassifier() grid_search GridSearchCV(rf, param_grid, cv5) grid_search.fit(X_train, y_train) best_rf grid_search.best_estimator_5.3 提升模型性能的技巧和策略 除了调优超参数还有一些其他的技巧和策略可以提升决策树和随机森林模型的性能。 一种常用的技巧是特征选择通过选择最相关的特征来减少决策树和随机森林的复杂度提高模型的泛化能力。 另一种常用的策略是集成学习通过组合多个决策树或随机森林模型的预测结果来提高模型的性能。常见的集成学习方法包括投票法、平均法和堆叠法等。 下面是使用特征选择和集成学习提升决策树和随机森林模型性能的示例代码 from sklearn.feature_selection import SelectKBest from sklearn.ensemble import VotingClassifier# 特征选择 selector SelectKBest(k10) X_train_selected selector.fit_transform(X_train, y_train) X_test_selected selector.transform(X_test)# 集成学习 dt1 DecisionTreeClassifier() dt2 DecisionTreeClassifier() rf1 RandomForestClassifier() rf2 RandomForestClassifier() voting_clf VotingClassifier(estimators[(dt1, dt1), (dt2, dt2), (rf1, rf1), (rf2, rf2)], votinghard) voting_clf.fit(X_train_selected, y_train)通过调优超参数、特征选择和集成学习等技巧和策略可以提高决策树和随机森林模型的性能使其更适用于实际问题的解决。
http://www.dnsts.com.cn/news/236376.html

相关文章:

  • h5混搭php建设网站网页设计模板图片四张
  • 高端网站建设的图片车身做网站宣传图
  • 用mvc做网站报告大连百度推广
  • 南京做网站的客户电话360建筑网中级机械工程师招聘
  • 网站开发移动端乐清站在哪
  • 如何给网站做旅游网页设计模板免费
  • wordpress 路径标签百度词条优化工作
  • 临城企业做网站html5线上运营网站
  • seo网站推广有哪些wordpress edm
  • wordpress子站点解析残联网站建设方案
  • 网站建设与管理是什么周口网站设计制作
  • 如何开发微信微网站兴安盟住房和城乡建设部网站
  • 做京挑客的网站国外做免费的视频网站
  • 唯品会网站开发技术分析如何查询网站的注册信息查询
  • 无需下载直接观看的正能量恩城seo的网站
  • 高清效果图网站wordpress wap跳转
  • 网站备案的影响国内专业网站建设
  • 建站软件2017专业网站建设好不好
  • 做 视频在线观看网站网站建设与管理以后工作方向
  • 网站建设开发语言和使用工具电子商务网站建设服务
  • 广州家居网站设计东莞专业建网站
  • 315网站专题怎么做宠物网站开发文档
  • 网站建设合同应注意什么律师事务所网站设计方案
  • 网站开发技术大学教材商业网站自主设计
  • 网站显示内容不显示专业做家居的网站有哪些
  • 江苏SEO网站建设广州建设学校
  • 网站排名优化服务公司网站建站 用户注册
  • 三水网站建设首选公司网站后门清除
  • 网站建设 软件开发的公司网站怎做
  • 南平市建设局网站千锋教育总部在哪里