降维方法 -简直太全- 附Python代码(Random Forest、Factor Analysis、corr、PCA、ICA、IOSMA

为什么要降维?

建模初期,我们往往只有几个指标,这个时候不太涉及到降维,但是一个月后你就发现,模型的指标越来越多,从原有的五六个指标一步一步变成 100 个指标。100 个很多吗?不多!但是以后呢?两个月过去可能会变成 500 个,三个月过去就会超过 1000 个,以后还会更多!

我们一边惊讶着,一个模型竟然可以有这么多指标,一边也在抓耳挠腮,这么多指标里面,肯定有冗余,怎么找出他们?总不能一个一个分析吧......所以需要更高效快捷的方法来处理高维数据,比如降维(减少指标数量的同时,避免丢失太多信息、改进模型性能的方法)。

降维的好处:

  1. 减少数据存储所需的空间,节约成本。

  2. 减少数据处理与建模的时间,提高效率。

  3. 提高算法的性能(一些算法在高维度数据上容易表现不佳)。

  4. 解决多重共线性问题。

  5. 有助于数据可视化(绘制二维三维数据图表比较简单)

以下一共12种方法,每种方法里的代码都是相对独立的,如果需要原数据练习的话,欢迎关注博主,并下方留言已关注+邮箱,博主会尽快回复邮件。

降维方法

先来看看原数据吧(已脱敏),这是我的习惯,知道要处理的是什么数据有助于理解接下来的方法。

11528 行数据中,第一列是因变量(y_增长率),余下的所有列为自变量(x1...x100),共 100 个自变量。

1.缺失值比例(高:删!)

学校做课题时拿到的数据,缺失值是相对较少的,但是在工作中,缺失值的比例简直让人瞠目结舌,高于 80% 都司空见惯了。当缺失值比例过高时,代表它包含的可用信息太少了,一般会设置一个阈值,缺失值比例高于阈值的特征便删掉。

Python 代码:

import pandas as pddatafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列a = data_fea.isnull().sum()/len(data_fea)*100 #缺失值比例
cols = data_fea.columns# 列名
col = [ ]
for i in range(0,100):if a[i]<=50:   #缺失值阈值为50%col.append(cols[i])
print("缺失值低于阈值的特征共%d个;"%len(col),"\n它们分别是:", col)

输出:

缺失值低于阈值的特征共73个 
它们分别是: ['x1', 'x2', 'x3', 'x6', 'x8', 'x9', 'x10', 'x11', 'x12', 'x13', 'x14', 'x15', 'x16', 'x17', 'x18','x19', 'x20', 'x21', 'x25', 'x26', 'x27', 'x28', 'x29','x30', 'x31', 'x32', 'x33', 'x38', 'x43', 'x52', 'x53','x54', 'x55', 'x56', 'x57', 'x58', 'x59', 'x60', 'x61','x62', 'x63', 'x64', 'x68', 'x69', 'x70', 'x73', 'x74','x75', 'x76', 'x77', 'x78', 'x79', 'x80', 'x81', 'x82','x83', 'x84', 'x85', 'x86', 'x87', 'x88', 'x89', 'x90','x91', 'x92', 'x93', 'x94', 'x95', 'x96', 'x97', 'x98','x99', 'x100']

2.方差(低:删!)

 若某一个特征中的数据基本一致,代表这一特征对因变量 y 的解释能力是比较低的,因此我们认为这种特征包含的可用信息也很少。特征中的数据基本一致的直接表现就是方差比较小。

在实际应用中,不同特征的数据范围是不一样的,有 [ 0, 1 ] 的,也有 [ 1, +∞) 的,因此通过这种方法降维之前一定要先对数据进行归一化处理(归一化与标准化不同,具体查看下面链接里的这篇文章)。

文章链接:Python数据预处理 - 归一化与标准化

Python 代码:

import pandas as pddatafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列data_fea = data_fea.fillna(0)#填补缺失值#归一化
data_fea = data_fea.apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))var = data_fea.var()#获取每一列的方差
cols = data_fea.columns
col = [ ]
for i in range(0,len(var)):if var[i]>=0.001:   # 将阈值设置为0.001col.append(cols[i])print("高于阈值的特征共%d个;"%len(col),"\n它们分别是:", col)

输出:

高于阈值的特征共69个; 
它们分别是: ['x1', 'x2', 'x3', 'x4', 'x5', 'x6','x7', 'x8', 'x10', 'x11', 'x12', 'x13', 'x14','x15', 'x16', 'x17', 'x18', 'x19', 'x20', 'x21','x22', 'x23', 'x24', 'x25', 'x26', 'x27', 'x28','x29', 'x30', 'x31', 'x32', 'x33', 'x39', 'x40','x41', 'x42', 'x43', 'x45', 'x47', 'x51', 'x52','x53', 'x54', 'x55', 'x66', 'x67', 'x68', 'x69','x70', 'x73', 'x75', 'x76', 'x79', 'x80', 'x81','x82', 'x83', 'x84', 'x85', 'x86', 'x87', 'x93','x94', 'x95', 'x96', 'x97', 'x98', 'x99', 'x100']

3.相关性矩阵(高:保留其一!)

如果两个特征的相关度较高,说明这两个特征携带的信息是高度相似的,过多的相似特征会降低某些算法的性能,比如逻辑回归(Logistic Regression)和线性回归(Linear Regreesion)。因此,一般会设置一个阈值,相关度高于阈值的特征只保留其中一个。

在下例中,因为特征数量较多,不便于展示,所以我们只选取 'x91',  'x92', 'x95', 'x96',' x97' 这五个特征进行相关度计算。

import pandas as pddatafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值
data_fea = data_fea.apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))#归一化cor = data_fea[['x91', 'x92','x95','x96','x97',]].corr()#选取部分特征计算
# cor = data_fea.corr() #全部特征计算
cor

输出:

	   x91	        x92	         x95        	x96	        x97
x91	1.000000	0.897225	-0.086567	-0.102104	-0.099413
x92	0.897225	1.000000	-0.080699	-0.093550	-0.106207
x95	-0.086567	-0.080699	1.000000	0.844717	0.724978
x96	-0.102104	-0.093550	0.844717	1.000000	0.841306
x97	-0.099413	-0.106207	0.724978	0.841306	1.000000

选取的五个特征中,'x91' 与 'x92' 的相关度达0.89,高相关,保留其一即可,其他同理。

0~0.3 弱相关

0.3~0.6  中等程度相关

0.6~1  强相关

4.随机森林(低:删!)

随机森林是一种广泛使用的特征选择算法,RandomForestRegressor 模块中的 feature_importances_  函数会自动计算各个特征的重要性,因此大大降低了编程的难度。之后再根据特征间的相对重要性选择指标即可。

需要注意的是,随机森林只接受数字,不接受空值、逻辑值、文字等其他类型,因此需要先填充空值,转化特征值等。

Python 代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressordatafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列model = RandomForestRegressor(random_state=1, max_depth=10)
data_fea = data_fea.fillna(0)#随机森林只接受数字输入,不接受空值、逻辑值、文字等类型
data_fea=pd.get_dummies(data_fea)
model.fit(data_fea,data.y_增长率)#根据特征的重要性绘制柱状图
features = data_fea.columns
importances = model.feature_importances_
indices = np.argsort(importances[0:9])  # 因指标太多,选取前10个指标作为例子
plt.title('Index selection')
plt.barh(range(len(indices)), importances[indices], color='pink', align='center')
plt.yticks(range(len(indices)), [features[i] for i in indices])
plt.xlabel('Relative importance of indicators')
plt.show()

输出:

5. 反向特征消除

反向特征消除是指先选择全部的特征进行建模,再根据模型评价指标,逐步删除特征。

步骤:

  1. 获取数据集中的全部 100 个特征和因变量( y_增长率)。

  2. 使用特征与因变量训练模型(逻辑回归 or 线性回归 or ......)。

  3. 计算模型评价指标(召回率、精确率、F1值、准确率)。

  4. 删除第 i 个特征后,用剩下的 99 个特征训练模型,并计算模型评价指标。

  5. 比较两次的评价指标,若评价指标提高,则删除第 i 个特征。

  6. 循环 4 ~ 5 过程,直到模型评价指标不再明显增加。

步骤很清晰,至于代码,根据下面链接中的建模代码、模型评价指标计算,再自己写一个循环就成。

逻辑回归:逻辑回归sklearn - (LR、LRCV、MLP、RLR)Python代码实现;

线性回归:多元线性回归 - 一步一步详解 - Python代码实现;

评价指标:召回率(Recall)、精确率(Precision)、F1 值(F-Measure)、准确率(Accuracy)的原理与 Python 代码实现

6. 前向特征选择

前向特征选择是相对反向特征消除而言的,前向特征选择并不是一开始就选择所有的特征,而是先选择最优的单个特征,再根据模型评价指标,逐步增加特征,直到召回率、精确率等评价指标不再提高为止。

步骤:

  1. 将每个特征与因变量 y 训练模型,得到 100 个模型 与 100 个模型评价指标。

  2. 选择模型评价指标最高的特征作为已入选特征。

  3. 添加一个特征到已入选特征中继续训练模型。

  4. 根据模型评价指标,选择第二个入选的特征,加入到已入选特征中。

  5. 循环 3 ~ 4 过程,直到模型评价指标不再明显增加。

import numpy as np
import pandas as pd
from sklearn.feature_selection import f_regressiondatafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值
data_fea = data_fea.apply(lambda x: (x - np.min(x)) / (np.max(x) - np.min(x)))#归一化fr = f_regression(data_fea,data.y_增长率)
cols = data_fea.columns
col = [ ]
for i in range(0,len(cols)-1):if fr[0][i] >=10:col.append(cols[i])
print("高于阈值的特征共%d个;"%len(col),"\n它们分别是:", col)

输出:

高于阈值的特征共53个; 
它们分别是: ['x1', 'x2', 'x4', 'x5', 'x6', 'x7','x9', 'x10', 'x11', 'x12', 'x13', 'x16', 'x18','x19', 'x20', 'x21', 'x22', 'x23', 'x24', 'x26','x27', 'x28', 'x34', 'x35', 'x36', 'x37', 'x38','x39', 'x40', 'x41', 'x42', 'x43', 'x44', 'x45','x46', 'x47', 'x48', 'x49', 'x50', 'x51', 'x52','x53', 'x54', 'x55', 'x66', 'x67', 'x69', 'x70','x71', 'x72', 'x73', 'x79', 'x80']

注意:前向特征选择和反向特征消除需要循环建模,耗时较久,计算成本很高,所以只适用于特征较少的数据,超过 1000 个特征的数据就慎重了。

7.因子分析(Factor Analysis)

与前几种方法不同的是,因子分析并不是通过删除特征来降低冗余数据的影响,而是通过挖掘潜在因子,在不删除特征的前提下降低影响。一般情况下,潜在因子的个数是远少于特征个数的,但是其携带的信息并不比原特征的少。

还不太了解因子分析原理的同学,可以参考下面这篇博客:

文章链接:因子分析法原理

Python 代码:

import numpy as np
import pandas as pd
from sklearn.decomposition import FactorAnalysis#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#因子分析,并选取潜在因子的个数为10
FA = FactorAnalysis(n_components = 10).fit_transform(data_fea.values)#潜在因子归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
FA = min_max_scaler.fit_transform(FA)#绘制图像,观察潜在因子的分布情况
import matplotlib.pyplot as plt
plt.figure(figsize=(12,8))
plt.title('Factor Analysis Components')
plt.scatter(FA[:,0], FA[:,1])
plt.scatter(FA[:,1], FA[:,2])
plt.scatter(FA[:,2],FA[:,3])
plt.scatter(FA[:,3],FA[:,4])
plt.scatter(FA[:,4],FA[:,5])
plt.scatter(FA[:,5],FA[:,6])
plt.scatter(FA[:,6],FA[:,7])
plt.scatter(FA[:,7],FA[:,8])
plt.scatter(FA[:,8],FA[:,9])
plt.scatter(FA[:,9],FA[:,0])

输出:

能不能找到10种颜色呢?哈哈,100 维到 10 维,没有删减特征,却成功降维啦!

8.主成分分析(PCA)

因子分析是假设存在一系列潜在因子,能反映变量携带的信息,本质是一种向下挖掘的方法。

而主成分分析PCA则是通过正交变换将原始的n维特征变换到一个新的被称做主成分的数据集中,本质是一种向上提取的方法。

 主成分分析通过累计的解释方差之和来判断主成分对所有特征的解释程度。

Python 代码:

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#选取主成分的个数为25
pca = PCA(n_components=25)
pca_result = pca.fit_transform(data_fea.values)#绘制图像,观察主成分对特征的解释程度
plt.bar(range(25), pca.explained_variance_ratio_ ,fc='pink', label='Single interpretation variance')
plt.plot(range(25), np.cumsum(pca.explained_variance_ratio_),color='blue', label='Cumulative Explained Variance')
plt.title("Component-wise and Cumulative Explained Variance")
plt.legend()
plt.show()

输出:

图中,粉色柱状图一共 25 个 柱子,代表提取的 25 个主成分,其高度代表每个主成分对方差的解释程度。

蓝色折线图代表 25 个主成分对方差的累计解释程度。我们可以看到,25 个主成分对 100 个特征方差的累计解释程度已经达到了80% ,因此这 25 个主成分携带了原始特征中的 大部分信息,成功降维!

9.独立分量分析(ICA) 

PCA 和 ICA 之间的主要区别在于,PCA寻找不相关的因素,而ICA寻找独立因素。如果两个特征是独立的,就代表两者之间没有任何关系。例如,今天下不下雨和我工资多少无关。

Python 代码:

import numpy as np
import pandas as pd
from sklearn.decomposition import FastICA
import matplotlib.pyplot as plt#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#独立分量分析(ICA)
ICA = FastICA(n_components=3, random_state=12) 
X=ICA.fit_transform(data_fea.values)#归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
X = min_max_scaler.fit_transform(X)#绘制图像,观察成分独立情况
plt.figure(figsize=(12,5))
plt.title('Factor Analysis Components')
plt.scatter(X[:,0], FA[:,1])
plt.scatter(X[:,1], FA[:,2])
plt.scatter(X[:,2],FA[:,0])

输出:

比我独立,满意!

10.manifold.Isomap

isomap算法主要流程:

  1. 构建邻接图G:基于输入空间X中流形G上的的邻近点对i,j之间的欧式距离dx (i,j),选取每个样本点距离最近的K个点(K-Isomap)或在样本点选定半径为常数ε的圆内所有点为该样本点的近邻点,将这些邻近点用边连接,将流形G构建为一个反映邻近关系的带权流通图G;
  2. 计算所有点对之间的最短路径:通过计算邻接图G上任意两点之间的最短路径逼近流形上的测地距离矩阵DG={dG(i,j)},最短路径的实现以Floyd或者Dijkstra算法为主。
  3. 构建k维坐标向量:根据图距离矩阵DG={dG(i,j)}使用经典Mds算法在d维空间Y中构造数据的嵌入坐标表示,选择低维空间Y的任意两个嵌入坐标向量yi与yj使得代价函数最小。

Python 代码:

import numpy as np
import pandas as pd
from sklearn import manifold 
import matplotlib.pyplot as plt#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#降维
trans_data = manifold.Isomap(n_neighbors=5, n_components=3, n_jobs=-1).fit_transform(data_fea.values)
#n_neighbors:决定每个点的相邻点数
#n_components:决定流形的坐标数
#n_jobs = -1:使用所有可用的CPU核心#归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
trans_data = min_max_scaler.fit_transform(trans_data)#绘制图像
plt.figure(figsize=(12,5))
plt.scatter(trans_data[:,0], trans_data[:,1])
plt.scatter(trans_data[:,1], trans_data[:,2])
plt.scatter(trans_data[:,2], trans_data[:,0])

输出:

运行耗时,降维效果差,不满意!

11.manifold.TSNE

Python 代码:

import numpy as np
import pandas as pd
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#降维
tsne = TSNE(n_components=3, n_iter=300).fit_transform(data_fea.values)#归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
tsne = min_max_scaler.fit_transform(tsne)#绘制图像
plt.figure(figsize=(12,5))
plt.scatter(tsne[:,0], tsne[:,1])
plt.scatter(tsne[:,1], tsne[:,2])
plt.scatter(tsne[:,2], tsne[:,0])

输出:

运行耗时,降维效果差,不满意!

12.UMAP

Python 代码:

import numpy as np
import pandas as pd
import umap
import matplotlib.pyplot as plt#导入数据
datafile = u'D:\\pythondata\\learn\\dimensionality_reduction.xlsx'
data = pd.read_excel(datafile)
data_fea = data.iloc[:,1:]#取数据中指标所在的列
data_fea = data_fea.fillna(0)#填补缺失值#标准化
data_mean = data_fea.mean()
data_std = data_fea.std()
data_fea = (data_fea - data_mean)/data_std#降维
umap_data = umap.UMAP(n_neighbors=5, min_dist=0.3, n_components=3).fit_transform(data_fea.values)#归一化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
umap_data = min_max_scaler.fit_transform(umap_data)#绘制图像
plt.figure(figsize=(12,5))
plt.scatter(umap_data[:,0], umap_data[:,1])
plt.scatter(umap_data[:,1], umap_data[:,2])
plt.scatter(umap_data[:,2], umap_data[:,0])

运行耗时,不满意!不满意!不满意!

大总结

这么多中方法,总有各自的优缺点,下面总结一下:

其中耗时为100个特征,11528行数据的运行耗时。

降维方法耗时效果信息丢失程度适用维度数据类型特殊要求
缺失值比率6.7s一般根据数据而定低维度
低方差滤波5.9s一般根据数据而定低维度线性
高相关滤波12.1s一般较少低维度线性与因子分析相反
随机森林18s一般一般均可
反向特征消除10.5s一般较少低维度
前向特征选择9.9s一般较少低维度
因子分析12.2s较好几乎不丢失均可线性特征间存在高度相关
PCA8.8s较好几乎不丢失均可线性
ICA6.8s一般较少均可
ISOMAP96.6s较差未知未知非线性
TSNE108.9s较差未知高维度非线性
UMAP80.2s较差未知高维度

文中所说的反向特征消除与前项特征消除比较耗时是针对高维度数据来说了,根据实际情况,在低维度数据中,两种方法并没有很耗时。

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

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

相关文章

CYQ.DBImport 数据库反向工程及批量导数据库工具 V2.0 发布[增加批量导出数据库脚本及数据库设计文档]...

上次发布的&#xff1a;CYQ.DBImport V1.0的相关介绍&#xff1a;CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 本次发布的V2.0 版本&#xff0c;准备突击海外&#xff0c;下面为相关的介绍。 一&#xff1a;新版本2.0的新增功能介绍 1&#xff1a;修正GUID的脚本错误2…

Power BI 如何获取数据做可视化

获 取 数 据 l 获取数据 Power BI Desktop 可连接到种类广泛的多种数据源&#xff0c;包括本地数据库、Excel 工作表和云服务等。 它可帮助清理数据和设置数据格式&#xff0c;以使数据更为有用&#xff0c;包括拆分和重命名列、更改数据类型和处理日期。还可创建列之间的关…

Power BI 将商业智能数据转换为数据理解

l 研究数据 在本部分中你要了解各种知识&#xff0c;并且积极的互动和进行 Power BI 共享在这一部分至关重要。 Power BI 服务简介 Power BI 服务是 Power BI Desktop 的自然扩展&#xff0c;其功能包括上传报表、创建仪表板&#xff0c;以及使用自然语言对数据进行提问。该服…

LeetCode 554. 砖墙(map计数)

1. 题目 你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。 砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。 如果你画的线只是从砖块的边缘经过&#xff0c;就不算穿…

Power BI 数据可视化(核心),让报表更生动

可 视 化 l 可视化 Power BI 中的视觉对象简介 实现数据可视化是 Power BI 的核心部分&#xff08;像我们在本课程前面所定义那样&#xff0c;它是基本的构建基块&#xff09;&#xff0c;而创建视觉对象是发现并共享你的见解的最简方法。 Power BI 默认提供众多可视化效果…

Power BI数据建模

l 建模 通常情况下&#xff0c;你将会连接到多个数据源以创建报表&#xff0c;且需所有数据协同工作。 建模就是实现这一点的办法。 若要创建不同数据源之间的逻辑连接&#xff0c;需创建一种关系。 数据源之间的关系使 Power BI 能够了解表与表之间的关系&#xff0c;以便能…

Power BI 数据可视化软件实现共享报表

l 在 Power BI 中与同事共享和协作 在此模块中&#xff0c;涵盖各种用于与同事共享和协作处理仪表板、报表和数据的方法。例如&#xff0c;你可以&#xff1a; 从 Power BI Desktop 向 Power BI 服务发布报表使用 Power BI Mobile 应用查看共享报表和仪表板并与其交互创建打包…

非线性规划 - 用非线性规划解决问题 - (Lingo建模)

在经营管理中&#xff0c;为取得更高的利润&#xff0c;不仅需要提高经营收入&#xff0c;也要考虑如何在现有的人力、物力和财力条件下合理安排&#xff0c;在满足要求的前提下&#xff0c;达到最低的成本。对于静态的最优化问题&#xff08;即所有数据不会瞬息万变&#xff0…

PHP学习之路(二)让我们开始环境搭建(Windows篇)

在上篇中&#xff0c;我详述了在Windows下配置Zend开发工具的详细过程&#xff0c;但是没有一个开发环境&#xff0c;你再牛B的工具自然也跑不起来&#xff0c;比如没有了.NET Framework&#xff0c;你跑个Visual Studio试试&#xff0c;所以搭建开发环境也是学习程序开发一个必…

线性规划 - 用单纯形法解决整数规划问题 - (Matlab、Lingo建模)

现实生活中&#xff0c;比如机器的台数&#xff0c;参与工作的人数&#xff0c;可调动的车辆数&#xff0c;这些数据都是整数。因此对于变量中包含整数、或者完全是整数的规划问题&#xff0c;我们称之为整数规划。在解决整数规划常用的算法便是单纯形法。 课题名称&#xff1a…

Oracle 多表 连接 顺序 与 性能关系 测试

一. 创建表并insert 数据 create table ta (id number,name varchar2(10)); create table tb(id number,job varchar2(10)); begin for i in 1..1000000 loop begin insert into ta values(i,dave); commit; end; end loop; end; begin for i in 1..1000000 loop begin if i<…

线性规划 - 用单纯形法解决LP问题 - (Matlab、Lingo建模)

线性规划研究时间较早&#xff0c;在实际应用中也比较成熟&#xff0c;它是一种辅助人们进行科学管理的数学方法&#xff0c;为合理地利用有限的人力、物力、财力等资源作出的最优决策&#xff0c;提供科学的依据。 课题名称&#xff1a;配货问题&#xff0c;使运费收入最大 现…

微软Webcast课程下载软件iReaper正式登陆Android平台

微软Webcast课程下载软件iReaper正式登陆Android平台&#xff0c;我叫它iReaper for Android。目前正处于测试阶段&#xff0c;功能比较单一。 目前支持 1.视频下载 2.课程代码下载 3.讲义下载 4.问答下载 附上截图&#xff0c;敬请期待&#xff01; 1.下载地址&#xff…

动态规划 - Floyd算法求最短路径 - (Matlab建模)

Floyd算法又称为弗洛伊德算法、插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法&#xff0c;与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。 课题名称&#xff1a;…

神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)

目录 神经网络模型简述 实例&#xff1a;交通运输能力预测设计 MATLAB程序及仿真结果 由于货物运输、地方经济及企业发展的紧密联系&#xff0c;因此作为反映货物运输需求的一项重要指标, 货运量预测研究和分析具有较强的实际意义。 常用的货运量预测方法包括时间序列方法、…

LeetCode 135. 分发糖果(DP)

1. 题目 老师想给孩子们分发糖果&#xff0c;有 N 个孩子站成了一条直线&#xff0c;老师会根据每个孩子的表现&#xff0c;预先给他们评分。 你需要按照以下要求&#xff0c;帮助老师给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻的孩子中&#xff0c…

网络数据的背后-网络日志的分析指标【转】

通常网站分析的技术包括页面标签分析技术&#xff08;JS技术&#xff09;和日志文件分析技术两种&#xff0c;两种网站分析技术各有优缺点&#xff0c;譬如下文中介绍的基于回话的统计和点击流分析日志文件分析法就要优于页面标签分析法&#xff0c;通常&#xff0c;两种技术具…

词云图 - WorldCloud - Python代码实现

目录 第一步&#xff1a;安装必要的包WorldCloud&#xff08;安装好并且没有出错的可跳过这一步&#xff09; 第二步&#xff1a;准备文件&#xff0c;词云图的图片和文章&#xff0c;按照自己喜好准备吧 第三步&#xff1a;Python实现-源码 第一步&#xff1a;安装必要的包…

[Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)

文章目录1. 项目介绍2. 性能指标3. 确定任务类型4. 查看数据5. 创建测试集6. 数据可视化7. 查找数据关联8. 特征组合9. 为算法准备数据9.1 数据清洗9.2 处理文本特征10. 自定义转换器11. 特征缩放12. 转换流水线Pipeline13. 训练模型14. 交叉验证15. 微调模型15.1 网格搜索15.2…

线性回归 - 机器学习多元线性回归 - 一步一步详解 - Python代码实现

目录 数据导入 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验&#xff08;判断是否可以做线性回归&#xff09; 训练线性回归模型 先甩几个典型的线性回归的模型&#xff0c;帮助大家捡起那些年被忘记的数学。 ● 单变量线性回归&…