mirror of
https://github.com/sjwhitworth/golearn.git
synced 2025-04-26 13:49:14 +08:00
examples: merge from v2-instances
This commit is contained in:
parent
2e5deb1476
commit
a9028b8174
@ -1,152 +1,151 @@
|
||||
Sepal length,Sepal width,Petal length,Petal width,Species
|
||||
2,3.5,1.4,0.2,Iris-setosa
|
||||
1,3,1.4,0.2,Iris-setosa
|
||||
1,3.2,1.3,0.2,Iris-setosa
|
||||
0,3.1,1.5,0.2,Iris-setosa
|
||||
1,3.6,1.4,0.2,Iris-setosa
|
||||
3,3.9,1.7,0.4,Iris-setosa
|
||||
0,3.4,1.4,0.3,Iris-setosa
|
||||
1,3.4,1.5,0.2,Iris-setosa
|
||||
0,2.9,1.4,0.2,Iris-setosa
|
||||
1,3.1,1.5,0.1,Iris-setosa
|
||||
3,3.7,1.5,0.2,Iris-setosa
|
||||
1,3.4,1.6,0.2,Iris-setosa
|
||||
1,3,1.4,0.1,Iris-setosa
|
||||
0,3,1.1,0.1,Iris-setosa
|
||||
4,4,1.2,0.2,Iris-setosa
|
||||
3,4.4,1.5,0.4,Iris-setosa
|
||||
3,3.9,1.3,0.4,Iris-setosa
|
||||
2,3.5,1.4,0.3,Iris-setosa
|
||||
3,3.8,1.7,0.3,Iris-setosa
|
||||
2,3.8,1.5,0.3,Iris-setosa
|
||||
3,3.4,1.7,0.2,Iris-setosa
|
||||
2,3.7,1.5,0.4,Iris-setosa
|
||||
0,3.6,1,0.2,Iris-setosa
|
||||
2,3.3,1.7,0.5,Iris-setosa
|
||||
1,3.4,1.9,0.2,Iris-setosa
|
||||
1,3,1.6,0.2,Iris-setosa
|
||||
1,3.4,1.6,0.4,Iris-setosa
|
||||
2,3.5,1.5,0.2,Iris-setosa
|
||||
2,3.4,1.4,0.2,Iris-setosa
|
||||
1,3.2,1.6,0.2,Iris-setosa
|
||||
1,3.1,1.6,0.2,Iris-setosa
|
||||
3,3.4,1.5,0.4,Iris-setosa
|
||||
2,4.1,1.5,0.1,Iris-setosa
|
||||
3,4.2,1.4,0.2,Iris-setosa
|
||||
1,3.1,1.5,0.1,Iris-setosa
|
||||
1,3.2,1.2,0.2,Iris-setosa
|
||||
3,3.5,1.3,0.2,Iris-setosa
|
||||
1,3.1,1.5,0.1,Iris-setosa
|
||||
0,3,1.3,0.2,Iris-setosa
|
||||
2,3.4,1.5,0.2,Iris-setosa
|
||||
1,3.5,1.3,0.3,Iris-setosa
|
||||
0,2.3,1.3,0.3,Iris-setosa
|
||||
0,3.2,1.3,0.2,Iris-setosa
|
||||
1,3.5,1.6,0.6,Iris-setosa
|
||||
2,3.8,1.9,0.4,Iris-setosa
|
||||
1,3,1.4,0.3,Iris-setosa
|
||||
2,3.8,1.6,0.2,Iris-setosa
|
||||
0,3.2,1.4,0.2,Iris-setosa
|
||||
2,3.7,1.5,0.2,Iris-setosa
|
||||
1,3.3,1.4,0.2,Iris-setosa
|
||||
7,3.2,4.7,1.4,Iris-versicolor
|
||||
5,3.2,4.5,1.5,Iris-versicolor
|
||||
7,3.1,4.9,1.5,Iris-versicolor
|
||||
3,2.3,4,1.3,Iris-versicolor
|
||||
6,2.8,4.6,1.5,Iris-versicolor
|
||||
3,2.8,4.5,1.3,Iris-versicolor
|
||||
5,3.3,4.7,1.6,Iris-versicolor
|
||||
1,2.4,3.3,1,Iris-versicolor
|
||||
6,2.9,4.6,1.3,Iris-versicolor
|
||||
2,2.7,3.9,1.4,Iris-versicolor
|
||||
1,2,3.5,1,Iris-versicolor
|
||||
4,3,4.2,1.5,Iris-versicolor
|
||||
4,2.2,4,1,Iris-versicolor
|
||||
5,2.9,4.7,1.4,Iris-versicolor
|
||||
3,2.9,3.6,1.3,Iris-versicolor
|
||||
6,3.1,4.4,1.4,Iris-versicolor
|
||||
3,3,4.5,1.5,Iris-versicolor
|
||||
4,2.7,4.1,1,Iris-versicolor
|
||||
5,2.2,4.5,1.5,Iris-versicolor
|
||||
3,2.5,3.9,1.1,Iris-versicolor
|
||||
4,3.2,4.8,1.8,Iris-versicolor
|
||||
5,2.8,4,1.3,Iris-versicolor
|
||||
5,2.5,4.9,1.5,Iris-versicolor
|
||||
5,2.8,4.7,1.2,Iris-versicolor
|
||||
5,2.9,4.3,1.3,Iris-versicolor
|
||||
6,3,4.4,1.4,Iris-versicolor
|
||||
6,2.8,4.8,1.4,Iris-versicolor
|
||||
6,3,5,1.7,Iris-versicolor
|
||||
4,2.9,4.5,1.5,Iris-versicolor
|
||||
3,2.6,3.5,1,Iris-versicolor
|
||||
3,2.4,3.8,1.1,Iris-versicolor
|
||||
3,2.4,3.7,1,Iris-versicolor
|
||||
4,2.7,3.9,1.2,Iris-versicolor
|
||||
4,2.7,5.1,1.6,Iris-versicolor
|
||||
3,3,4.5,1.5,Iris-versicolor
|
||||
4,3.4,4.5,1.6,Iris-versicolor
|
||||
6,3.1,4.7,1.5,Iris-versicolor
|
||||
5,2.3,4.4,1.3,Iris-versicolor
|
||||
3,3,4.1,1.3,Iris-versicolor
|
||||
3,2.5,4,1.3,Iris-versicolor
|
||||
3,2.6,4.4,1.2,Iris-versicolor
|
||||
5,3,4.6,1.4,Iris-versicolor
|
||||
4,2.6,4,1.2,Iris-versicolor
|
||||
1,2.3,3.3,1,Iris-versicolor
|
||||
3,2.7,4.2,1.3,Iris-versicolor
|
||||
3,3,4.2,1.2,Iris-versicolor
|
||||
3,2.9,4.2,1.3,Iris-versicolor
|
||||
5,2.9,4.3,1.3,Iris-versicolor
|
||||
2,2.5,3,1.1,Iris-versicolor
|
||||
3,2.8,4.1,1.3,Iris-versicolor
|
||||
5,3.3,6,2.5,Iris-virginica
|
||||
4,2.7,5.1,1.9,Iris-virginica
|
||||
7,3,5.9,2.1,Iris-virginica
|
||||
5,2.9,5.6,1.8,Iris-virginica
|
||||
6,3,5.8,2.2,Iris-virginica
|
||||
9,3,6.6,2.1,Iris-virginica
|
||||
1,2.5,4.5,1.7,Iris-virginica
|
||||
8,2.9,6.3,1.8,Iris-virginica
|
||||
6,2.5,5.8,1.8,Iris-virginica
|
||||
8,3.6,6.1,2.5,Iris-virginica
|
||||
6,3.2,5.1,2,Iris-virginica
|
||||
5,2.7,5.3,1.9,Iris-virginica
|
||||
6,3,5.5,2.1,Iris-virginica
|
||||
3,2.5,5,2,Iris-virginica
|
||||
4,2.8,5.1,2.4,Iris-virginica
|
||||
5,3.2,5.3,2.3,Iris-virginica
|
||||
6,3,5.5,1.8,Iris-virginica
|
||||
9,3.8,6.7,2.2,Iris-virginica
|
||||
9,2.6,6.9,2.3,Iris-virginica
|
||||
4,2.2,5,1.5,Iris-virginica
|
||||
7,3.2,5.7,2.3,Iris-virginica
|
||||
3,2.8,4.9,2,Iris-virginica
|
||||
9,2.8,6.7,2,Iris-virginica
|
||||
5,2.7,4.9,1.8,Iris-virginica
|
||||
6,3.3,5.7,2.1,Iris-virginica
|
||||
8,3.2,6,1.8,Iris-virginica
|
||||
5,2.8,4.8,1.8,Iris-virginica
|
||||
5,3,4.9,1.8,Iris-virginica
|
||||
5,2.8,5.6,2.1,Iris-virginica
|
||||
8,3,5.8,1.6,Iris-virginica
|
||||
8,2.8,6.1,1.9,Iris-virginica
|
||||
9,3.8,6.4,2,Iris-virginica
|
||||
5,2.8,5.6,2.2,Iris-virginica
|
||||
5,2.8,5.1,1.5,Iris-virginica
|
||||
5,2.6,5.6,1.4,Iris-virginica
|
||||
9,3,6.1,2.3,Iris-virginica
|
||||
5,3.4,5.6,2.4,Iris-virginica
|
||||
5,3.1,5.5,1.8,Iris-virginica
|
||||
4,3,4.8,1.8,Iris-virginica
|
||||
7,3.1,5.4,2.1,Iris-virginica
|
||||
6,3.1,5.6,2.4,Iris-virginica
|
||||
7,3.1,5.1,2.3,Iris-virginica
|
||||
4,2.7,5.1,1.9,Iris-virginica
|
||||
6,3.2,5.9,2.3,Iris-virginica
|
||||
6,3.3,5.7,2.5,Iris-virginica
|
||||
6,3,5.2,2.3,Iris-virginica
|
||||
5,2.5,5,1.9,Iris-virginica
|
||||
6,3,5.2,2,Iris-virginica
|
||||
5,3.4,5.4,2.3,Iris-virginica
|
||||
4,3,5.1,1.8,Iris-virginica
|
||||
|
||||
Sepal length,Sepal width,Petal length, Petal width,Species
|
||||
5.02,3.5,1.4,0.2,Iris-setosa
|
||||
4.66,3,1.4,0.2,Iris-setosa
|
||||
4.66,3.2,1.3,0.2,Iris-setosa
|
||||
4.3,3.1,1.5,0.2,Iris-setosa
|
||||
4.66,3.6,1.4,0.2,Iris-setosa
|
||||
5.38,3.9,1.7,0.4,Iris-setosa
|
||||
4.3,3.4,1.4,0.3,Iris-setosa
|
||||
4.66,3.4,1.5,0.2,Iris-setosa
|
||||
4.3,2.9,1.4,0.2,Iris-setosa
|
||||
4.66,3.1,1.5,0.1,Iris-setosa
|
||||
5.38,3.7,1.5,0.2,Iris-setosa
|
||||
4.66,3.4,1.6,0.2,Iris-setosa
|
||||
4.66,3,1.4,0.1,Iris-setosa
|
||||
4.3,3,1.1,0.1,Iris-setosa
|
||||
5.74,4,1.2,0.2,Iris-setosa
|
||||
5.38,4.4,1.5,0.4,Iris-setosa
|
||||
5.38,3.9,1.3,0.4,Iris-setosa
|
||||
5.02,3.5,1.4,0.3,Iris-setosa
|
||||
5.38,3.8,1.7,0.3,Iris-setosa
|
||||
5.02,3.8,1.5,0.3,Iris-setosa
|
||||
5.38,3.4,1.7,0.2,Iris-setosa
|
||||
5.02,3.7,1.5,0.4,Iris-setosa
|
||||
4.3,3.6,1,0.2,Iris-setosa
|
||||
5.02,3.3,1.7,0.5,Iris-setosa
|
||||
4.66,3.4,1.9,0.2,Iris-setosa
|
||||
4.66,3,1.6,0.2,Iris-setosa
|
||||
4.66,3.4,1.6,0.4,Iris-setosa
|
||||
5.02,3.5,1.5,0.2,Iris-setosa
|
||||
5.02,3.4,1.4,0.2,Iris-setosa
|
||||
4.66,3.2,1.6,0.2,Iris-setosa
|
||||
4.66,3.1,1.6,0.2,Iris-setosa
|
||||
5.38,3.4,1.5,0.4,Iris-setosa
|
||||
5.02,4.1,1.5,0.1,Iris-setosa
|
||||
5.38,4.2,1.4,0.2,Iris-setosa
|
||||
4.66,3.1,1.5,0.1,Iris-setosa
|
||||
4.66,3.2,1.2,0.2,Iris-setosa
|
||||
5.38,3.5,1.3,0.2,Iris-setosa
|
||||
4.66,3.1,1.5,0.1,Iris-setosa
|
||||
4.3,3,1.3,0.2,Iris-setosa
|
||||
5.02,3.4,1.5,0.2,Iris-setosa
|
||||
4.66,3.5,1.3,0.3,Iris-setosa
|
||||
4.3,2.3,1.3,0.3,Iris-setosa
|
||||
4.3,3.2,1.3,0.2,Iris-setosa
|
||||
4.66,3.5,1.6,0.6,Iris-setosa
|
||||
5.02,3.8,1.9,0.4,Iris-setosa
|
||||
4.66,3,1.4,0.3,Iris-setosa
|
||||
5.02,3.8,1.6,0.2,Iris-setosa
|
||||
4.3,3.2,1.4,0.2,Iris-setosa
|
||||
5.02,3.7,1.5,0.2,Iris-setosa
|
||||
4.66,3.3,1.4,0.2,Iris-setosa
|
||||
6.82,3.2,4.7,1.4,Iris-versicolor
|
||||
6.1,3.2,4.5,1.5,Iris-versicolor
|
||||
6.82,3.1,4.9,1.5,Iris-versicolor
|
||||
5.38,2.3,4,1.3,Iris-versicolor
|
||||
6.46,2.8,4.6,1.5,Iris-versicolor
|
||||
5.38,2.8,4.5,1.3,Iris-versicolor
|
||||
6.1,3.3,4.7,1.6,Iris-versicolor
|
||||
4.66,2.4,3.3,1,Iris-versicolor
|
||||
6.46,2.9,4.6,1.3,Iris-versicolor
|
||||
5.02,2.7,3.9,1.4,Iris-versicolor
|
||||
4.66,2,3.5,1,Iris-versicolor
|
||||
5.74,3,4.2,1.5,Iris-versicolor
|
||||
5.74,2.2,4,1,Iris-versicolor
|
||||
6.1,2.9,4.7,1.4,Iris-versicolor
|
||||
5.38,2.9,3.6,1.3,Iris-versicolor
|
||||
6.46,3.1,4.4,1.4,Iris-versicolor
|
||||
5.38,3,4.5,1.5,Iris-versicolor
|
||||
5.74,2.7,4.1,1,Iris-versicolor
|
||||
6.1,2.2,4.5,1.5,Iris-versicolor
|
||||
5.38,2.5,3.9,1.1,Iris-versicolor
|
||||
5.74,3.2,4.8,1.8,Iris-versicolor
|
||||
6.1,2.8,4,1.3,Iris-versicolor
|
||||
6.1,2.5,4.9,1.5,Iris-versicolor
|
||||
6.1,2.8,4.7,1.2,Iris-versicolor
|
||||
6.1,2.9,4.3,1.3,Iris-versicolor
|
||||
6.46,3,4.4,1.4,Iris-versicolor
|
||||
6.46,2.8,4.8,1.4,Iris-versicolor
|
||||
6.46,3,5,1.7,Iris-versicolor
|
||||
5.74,2.9,4.5,1.5,Iris-versicolor
|
||||
5.38,2.6,3.5,1,Iris-versicolor
|
||||
5.38,2.4,3.8,1.1,Iris-versicolor
|
||||
5.38,2.4,3.7,1,Iris-versicolor
|
||||
5.74,2.7,3.9,1.2,Iris-versicolor
|
||||
5.74,2.7,5.1,1.6,Iris-versicolor
|
||||
5.38,3,4.5,1.5,Iris-versicolor
|
||||
5.74,3.4,4.5,1.6,Iris-versicolor
|
||||
6.46,3.1,4.7,1.5,Iris-versicolor
|
||||
6.1,2.3,4.4,1.3,Iris-versicolor
|
||||
5.38,3,4.1,1.3,Iris-versicolor
|
||||
5.38,2.5,4,1.3,Iris-versicolor
|
||||
5.38,2.6,4.4,1.2,Iris-versicolor
|
||||
6.1,3,4.6,1.4,Iris-versicolor
|
||||
5.74,2.6,4,1.2,Iris-versicolor
|
||||
4.66,2.3,3.3,1,Iris-versicolor
|
||||
5.38,2.7,4.2,1.3,Iris-versicolor
|
||||
5.38,3,4.2,1.2,Iris-versicolor
|
||||
5.38,2.9,4.2,1.3,Iris-versicolor
|
||||
6.1,2.9,4.3,1.3,Iris-versicolor
|
||||
5.02,2.5,3,1.1,Iris-versicolor
|
||||
5.38,2.8,4.1,1.3,Iris-versicolor
|
||||
6.1,3.3,6,2.5,Iris-virginica
|
||||
5.74,2.7,5.1,1.9,Iris-virginica
|
||||
6.82,3,5.9,2.1,Iris-virginica
|
||||
6.1,2.9,5.6,1.8,Iris-virginica
|
||||
6.46,3,5.8,2.2,Iris-virginica
|
||||
7.54,3,6.6,2.1,Iris-virginica
|
||||
4.66,2.5,4.5,1.7,Iris-virginica
|
||||
7.18,2.9,6.3,1.8,Iris-virginica
|
||||
6.46,2.5,5.8,1.8,Iris-virginica
|
||||
7.18,3.6,6.1,2.5,Iris-virginica
|
||||
6.46,3.2,5.1,2,Iris-virginica
|
||||
6.1,2.7,5.3,1.9,Iris-virginica
|
||||
6.46,3,5.5,2.1,Iris-virginica
|
||||
5.38,2.5,5,2,Iris-virginica
|
||||
5.74,2.8,5.1,2.4,Iris-virginica
|
||||
6.1,3.2,5.3,2.3,Iris-virginica
|
||||
6.46,3,5.5,1.8,Iris-virginica
|
||||
7.54,3.8,6.7,2.2,Iris-virginica
|
||||
7.54,2.6,6.9,2.3,Iris-virginica
|
||||
5.74,2.2,5,1.5,Iris-virginica
|
||||
6.82,3.2,5.7,2.3,Iris-virginica
|
||||
5.38,2.8,4.9,2,Iris-virginica
|
||||
7.54,2.8,6.7,2,Iris-virginica
|
||||
6.1,2.7,4.9,1.8,Iris-virginica
|
||||
6.46,3.3,5.7,2.1,Iris-virginica
|
||||
7.18,3.2,6,1.8,Iris-virginica
|
||||
6.1,2.8,4.8,1.8,Iris-virginica
|
||||
6.1,3,4.9,1.8,Iris-virginica
|
||||
6.1,2.8,5.6,2.1,Iris-virginica
|
||||
7.18,3,5.8,1.6,Iris-virginica
|
||||
7.18,2.8,6.1,1.9,Iris-virginica
|
||||
7.9,3.8,6.4,2,Iris-virginica
|
||||
6.1,2.8,5.6,2.2,Iris-virginica
|
||||
6.1,2.8,5.1,1.5,Iris-virginica
|
||||
6.1,2.6,5.6,1.4,Iris-virginica
|
||||
7.54,3,6.1,2.3,Iris-virginica
|
||||
6.1,3.4,5.6,2.4,Iris-virginica
|
||||
6.1,3.1,5.5,1.8,Iris-virginica
|
||||
5.74,3,4.8,1.8,Iris-virginica
|
||||
6.82,3.1,5.4,2.1,Iris-virginica
|
||||
6.46,3.1,5.6,2.4,Iris-virginica
|
||||
6.82,3.1,5.1,2.3,Iris-virginica
|
||||
5.74,2.7,5.1,1.9,Iris-virginica
|
||||
6.46,3.2,5.9,2.3,Iris-virginica
|
||||
6.46,3.3,5.7,2.5,Iris-virginica
|
||||
6.46,3,5.2,2.3,Iris-virginica
|
||||
6.1,2.5,5,1.9,Iris-virginica
|
||||
6.46,3,5.2,2,Iris-virginica
|
||||
6.1,3.4,5.4,2.3,Iris-virginica
|
||||
5.74,3,5.1,1.8,Iris-virginica
|
||||
|
|
@ -34,7 +34,7 @@ func main() {
|
||||
|
||||
// If two decimal places isn't enough, you can update the
|
||||
// Precision field on any FloatAttribute
|
||||
if attr, ok := rawData.GetAttr(0).(*base.FloatAttribute); !ok {
|
||||
if attr, ok := rawData.AllAttributes()[0].(*base.FloatAttribute); !ok {
|
||||
panic("Invalid cast")
|
||||
} else {
|
||||
attr.Precision = 4
|
||||
@ -44,8 +44,15 @@ func main() {
|
||||
|
||||
// We can update the set of Instances, although the API
|
||||
// for doing so is not very sophisticated.
|
||||
rawData.SetAttrStr(0, 0, "1.00")
|
||||
rawData.SetAttrStr(0, rawData.ClassIndex, "Iris-unusual")
|
||||
|
||||
// First, have to resolve Attribute Specifications
|
||||
as := base.ResolveAllAttributes(rawData, rawData.AllAttributes())
|
||||
|
||||
// Attribute Specifications describe where a given column lives
|
||||
rawData.Set(as[0], 0, as[0].GetAttribute().GetSysValFromString("1.00"))
|
||||
|
||||
// A SetClass method exists as a shortcut
|
||||
base.SetClass(rawData, 0, "Iris-unusual")
|
||||
fmt.Println(rawData)
|
||||
|
||||
// There is a way of creating new Instances from scratch.
|
||||
@ -64,6 +71,21 @@ func main() {
|
||||
attrs[1].GetSysValFromString("A")
|
||||
|
||||
// Now let's create the final instances set
|
||||
newInst := base.NewInstancesFromRaw(attrs, 1, newData)
|
||||
newInst := base.NewDenseInstances()
|
||||
|
||||
// Add the attributes
|
||||
newSpecs := make([]base.AttributeSpec, len(attrs))
|
||||
for i, a := range attrs {
|
||||
newSpecs[i] = newInst.AddAttribute(a)
|
||||
}
|
||||
|
||||
// Allocate space
|
||||
newInst.Extend(1)
|
||||
|
||||
// Write the data
|
||||
newInst.Set(newSpecs[0], 0, newSpecs[0].GetAttribute().GetSysValFromString("1.0"))
|
||||
newInst.Set(newSpecs[1], 0, newSpecs[1].GetAttribute().GetSysValFromString("A"))
|
||||
|
||||
fmt.Println(newInst)
|
||||
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ func main() {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
rawData.Shuffle()
|
||||
|
||||
//Initialises a new KNN classifier
|
||||
cls := knn.NewKnnClassifier("euclidean", 2)
|
||||
|
||||
|
@ -5,15 +5,15 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
base "github.com/sjwhitworth/golearn/base"
|
||||
ensemble "github.com/sjwhitworth/golearn/ensemble"
|
||||
eval "github.com/sjwhitworth/golearn/evaluation"
|
||||
filters "github.com/sjwhitworth/golearn/filters"
|
||||
ensemble "github.com/sjwhitworth/golearn/ensemble"
|
||||
trees "github.com/sjwhitworth/golearn/trees"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main () {
|
||||
func main() {
|
||||
|
||||
var tree base.Classifier
|
||||
|
||||
@ -27,12 +27,14 @@ func main () {
|
||||
|
||||
// Discretise the iris dataset with Chi-Merge
|
||||
filt := filters.NewChiMergeFilter(iris, 0.99)
|
||||
filt.AddAllNumericAttributes()
|
||||
filt.Build()
|
||||
filt.Run(iris)
|
||||
for _, a := range base.NonClassFloatAttributes(iris) {
|
||||
filt.AddAttribute(a)
|
||||
}
|
||||
filt.Train()
|
||||
irisf := base.NewLazilyFilteredInstances(iris, filt)
|
||||
|
||||
// Create a 60-40 training-test split
|
||||
trainData, testData := base.InstancesTrainTestSplit(iris, 0.60)
|
||||
trainData, testData := base.InstancesTrainTestSplit(irisf, 0.60)
|
||||
|
||||
//
|
||||
// First up, use ID3
|
||||
|
Loading…
x
Reference in New Issue
Block a user