<span class=" tlabel">@ViewBag.entity.Label.substring(0,5)</span>为什么截取不到
时间: 2024-01-16 15:03:47 浏览: 124
可能是因为在 ASP.NET MVC 中,视图不支持在 Razor 代码中直接使用 ViewBag 属性。你需要在控制器中将数据传递给视图,然后再在视图中使用。另外,如果 ViewBag.entity.Label 为空或长度不足5个字符,截取操作可能会失败。你可以在代码中添加一些判断来避免这种情况。例如:
```csharp
@if(!string.IsNullOrEmpty(ViewBag.entity?.Label) && ViewBag.entity.Label.Length >= 5)
{
<span class="tlabel">@ViewBag.entity.Label.Substring(0, 5)</span>
}
```
相关问题
@if (!string.IsNullOrEmpty(ViewBag.entity?.Label) && ViewBag.entity.Label.Length >= 4) { <span class="tlabel">@ViewBag.entity.Label.Substring(0, 4)</span> } @if (!string.IsNullOrEmpty(ViewBag.entity?.Label) && ViewBag.entity.Label.Length >= 9) { <span class=" tlabel">@ViewBag.entity.Label.Substring(5, 9)</span> }为什么报错
这段代码中的错误可能是由于 `Substring()` 方法的参数有误导致的。具体来说,可能是以下两个原因之一:
1. 第一个 `Substring()` 方法的第二个参数 `4` 可能超过了 `ViewBag.entity.Label` 字符串的长度,导致索引超出范围。
2. 第二个 `Substring()` 方法的第二个参数 `9` 可能超过了 `ViewBag.entity.Label` 字符串的长度减去第一个 `Substring()` 方法中截取的长度 `4`,导致索引超出范围。
为了避免这个错误,可以在调用 `Substring()` 方法之前,先对 `ViewBag.entity.Label` 进行空值和长度的判断,确保能够正常进行字符串截取操作。例如:
```
@if (!string.IsNullOrEmpty(ViewBag.entity?.Label) && ViewBag.entity.Label.Length >= 4)
{
<span class="tlabel">@ViewBag.entity.Label.Substring(0, Math.Min(4, ViewBag.entity.Label.Length))</span>
}
@if (!string.IsNullOrEmpty(ViewBag.entity?.Label) && ViewBag.entity.Label.Length >= 9)
{
<span class="tlabel">@ViewBag.entity.Label.Substring(5, Math.Min(9, ViewBag.entity.Label.Length - 5))</span>
}
```
这样做可以避免索引超出范围的问题,并且在字符串长度小于截取长度时,只截取实际长度的部分。
修改下面代码,另画一张可视化图展示出t_sne里面的数据每15行数据个用一种颜色画出。 import pandas as pd from sklearn import cluster from sklearn import metrics import matplotlib.pyplot as plt from sklearn.manifold import TSNE from sklearn.decomposition import PCA def k_means(data_set, output_file, png_file, t_labels, score_file, set_name): model = cluster.KMeans(n_clusters=7, max_iter=1000, init="k-means++") model.fit(data_set) # print(list(model.labels_)) p_labels = list(model.labels_) r = pd.concat([data_set, pd.Series(model.labels_, index=data_set.index)], axis=1) r.columns = list(data_set.columns) + [u'聚类类别'] print(r) # r.to_excel(output_file) with open(score_file, "a") as sf: sf.write("By k-means, the f-m_score of " + set_name + " is: " + str(metrics.fowlkes_mallows_score(t_labels, p_labels))+"\n") sf.write("By k-means, the rand_score of " + set_name + " is: " + str(metrics.adjusted_rand_score(t_labels, p_labels))+"\n") '''pca = PCA(n_components=2) pca.fit(data_set) pca_result = pca.transform(data_set) t_sne = pd.DataFrame(pca_result, index=data_set.index)''' t_sne = TSNE() t_sne.fit(data_set) t_sne = pd.DataFrame(t_sne.embedding_, index=data_set.index) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False dd = t_sne[r[u'聚类类别'] == 0] plt.plot(dd[0], dd[1], 'r.') dd = t_sne[r[u'聚类类别'] == 1] plt.plot(dd[0], dd[1], 'go') dd = t_sne[r[u'聚类类别'] == 2] plt.plot(dd[0], dd[1], 'b*') dd = t_sne[r[u'聚类类别'] == 3] plt.plot(dd[0], dd[1], 'o') dd = t_sne[r[u'聚类类别'] == 4] plt.plot(dd[0], dd[1], 'm.') dd = t_sne[r[u'聚类类别'] == 5] plt.plot(dd[0], dd[1], 'co') dd = t_sne[r[u'聚类类别'] == 6] plt.plot(dd[0], dd[1], 'y*') plt.savefig(png_file) plt.clf() '''plt.scatter(data_set.iloc[:, 0], data_set.iloc[:, 1], c=model.labels_) plt.savefig(png_file) plt.clf()''' frog_data = pd.read_csv("D:/PyCharmPython/pythonProject/mfcc3.csv") tLabel = [] for family in frog_data['name']: if family == "A": tLabel.append(0) elif family == "B": tLabel.append(1) elif family == "C": tLabel.append(2) elif family == "D": tLabel.append(3) elif family == "E": tLabel.append(4) elif family == "F": tLabel.append(5) elif family == "G": tLabel.append(6) scoreFile = "D:/PyCharmPython/pythonProject/scoreOfClustering.txt" first_set = frog_data.iloc[:, 1:1327] k_means(first_set, "D:/PyCharmPython/pythonProject/kMeansSet_1.xlsx", "D:/PyCharmPython/pythonProject/kMeansSet_2.png", tLabel, scoreFile, "Set_1")
修改后的代码如下所示:
```python
import pandas as pd
from sklearn import cluster
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.decomposition import PCA
def k_means(data_set, output_file, png_file, t_labels, score_file, set_name):
model = cluster.KMeans(n_clusters=7, max_iter=1000, init="k-means++")
model.fit(data_set)
p_labels = list(model.labels_)
r = pd.concat([data_set, pd.Series(model.labels_, index=data_set.index)], axis=1)
r.columns = list(data_set.columns) + [u'聚类类别']
print(r)
with open(score_file, "a") as sf:
sf.write("By k-means, the f-m_score of " + set_name + " is: " + str(metrics.fowlkes_mallows_score(t_labels, p_labels))+"\n")
sf.write("By k-means, the rand_score of " + set_name + " is: " + str(metrics.adjusted_rand_score(t_labels, p_labels))+"\n")
t_sne = TSNE()
t_sne.fit(data_set)
t_sne = pd.DataFrame(t_sne.embedding_, index=data_set.index)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
colors = ['r', 'g', 'b', 'o', 'm', 'c', 'y']
for i in range(0, len(t_sne), 15):
dd = t_sne[r[u'聚类类别'] == i]
plt.plot(dd[0], dd[1], colors[i % len(colors)]+'.')
plt.savefig(png_file)
plt.clf()
frog_data = pd.read_csv("D:/PyCharmPython/pythonProject/mfcc3.csv")
tLabel = []
for family in frog_data['name']:
if family == "A":
tLabel.append(0)
elif family == "B":
tLabel.append(1)
elif family == "C":
tLabel.append(2)
elif family == "D":
tLabel.append(3)
elif family == "E":
tLabel.append(4)
elif family == "F":
tLabel.append(5)
elif family == "G":
tLabel.append(6)
scoreFile = "D:/PyCharmPython/pythonProject/scoreOfClustering.txt"
first_set = frog_data.iloc[:, 1:1327]
k_means(first_set, "D:/PyCharmPython/pythonProject/kMeansSet_1.xlsx", "D:/PyCharmPython/pythonProject/kMeansSet_2.png", tLabel, scoreFile, "Set_1")
```
这段代码对原始代码进行了修改,使用了循环来绘制 t_sne 中每15行数据的散点图,并且使用不同的颜色来表示每个类别。修改后的代码会生成一个名为 "kMeansSet_2.png" 的可视化图。请确保已经安装了相关的依赖库,并将相关路径替换为正确的文件路径。
阅读全文