读取excel表中一列数据,并存储为数组,将数组中连续出现的相同字符串划分在一起,并初始化一个空数组X用来存储临时划分位置,最后一个不相同元素不用存储划分位置,数组merge中记录了可以划分的位置 初始化giniMin为无穷大,输入参数k,判断临时划分位置数组X包含的数据个数,当X中数据个数等于k-1时,对划分位置的基尼指数进行计算, if (Gini(data, X)<ginMin) then giniMin = Gini(data, X); result = X; 若不满足X中数据个数等于k-1个时,for(i=0, j=merge[0]; i<merge.size(); i++) do X.push_back(j); partition(str, k, &X, &merge, &giniMin);X.pop_back();
时间: 2023-12-03 11:44:38 浏览: 78
代码实现如下:
```python
import pandas as pd
def partition(str, k, X, merge, giniMin):
data = pd.read_excel('data.xlsx', usecols=[str])
arr = data.values.ravel()
temp = [arr[0]]
for i in range(1, len(arr)):
if arr[i] == arr[i-1]:
temp.append(arr[i])
else:
X.append(len(temp))
temp = [arr[i]]
if len(X) == k-1:
if Gini(data, X) < giniMin:
giniMin = Gini(data, X)
result = X.copy()
else:
for i in range(len(merge)):
j = merge[i]
X.append(j)
partition(str, k, X, merge[i+1:], giniMin)
X.pop()
def Gini(data, X):
# 计算基尼指数
pass
```
其中,`usecols=[str]`表示读取Excel表格中的第`str`列,`arr.ravel()`将多维数组变成一维数组,`temp`用于存储相同的字符串,`X`为临时划分位置数组,`merge`为可以划分的位置数组,`Gini`函数用于计算基尼指数,这里未实现,需要根据具体情况进行编写。
阅读全文